spawn 一个小型命令行工具,用于在本地快速尝试 Swift Package Manager (SPM) 包。
从 Xcode 11 开始,这项功能已经被 Xcode 11 Package 支持“侦察”到了 :),也就是说,从 Xcode 11 开始,Xcode 将自动解析包依赖并为你打开 Xcode 项目,无需任何第三方工具。但我会保留这个工具用于学习目的。
它的工作是检查当前仓库是否有任何 Package.swift
文件,并解析依赖,然后为你打开 Xcode。
$ spawn
Completed resolution in 0.22s
📦 ... Everything is already up-to-date
🛠 ... generated: ./spawn.xcodeproj
📂 ... opening updated Xcode project
✅ all done!
注意:您可能需要关闭 Xcode 才能使 xed .
生效,或者从 Xcode 警报中选择“恢复”选项。
当您想要在 Xcode 中试用或编辑 SPM 包,或者在 SPM 的包清单文件中添加任何新的 .package
后,您需要运行 swift package update
或 swift package generate-xcodeproj
并重新加载 Xcode。
这个小包装器旨在自动化该过程。
总结;之前
$ git clone https://github.com/vinhnx/DictionaryNestedSubscript # clone any Swift Package Manager project
$ cd DictionaryNestedSubscript # change directory to newly cloned repo
$ swift package update # update or resolve package dependencies
$ swift package generate-xcodeproj # generate a .xcodeproj to edit on Xcode
$ xed . # open generated .xcodeproj automatically
之后
$ git clone https://github.com/vinhnx/DictionaryNestedSubscript # clone any Swift Package Manager project
$ cd DictionaryNestedSubscript # change directory to newly cloned repo
$ spawn
TODO:未来我将研究如何自动化从远程仓库克隆,例如
$ spawn https://github.com/vinhnx/DictionaryNestedSubscript # not yet working
在任何 Swift 包目录下,在 git clone
之后
$ spawn
您可以使用 spawn 替代 Vapor 的 vapor xcode -y
命令
之前
$ vapor xcode -y
之后
$ spawn
“一个包管理器,用于安装预构建的 Swift 命令行工具包,或者说是 Swift 包的 Homebrew。”
$ swift brew install vinhnx/spawn
$ brew tap vinhnx/homebrew-formulae
$ brew install spawn
或者
$ brew install vinhnx/homebrew-formulae/spawn
$ mint install vinhnx/spawn
$ marathon install vinhnx/spawn
Make
$ git clone https://github.com/vinhnx/spawn.git
$ cd spawn
$ make
Swift Package Manager
$ git clone https://github.com/vinhnx/spawn.git
$ cd spawn
$ swift build -c release
$ cp -f .build/release/spawn /usr/local/bin/spawn
如果您喜欢这个工具,请查看我的 vintage,它是一个用于检查任何过期包的工具。
组合
$ vintage && spawn # vintage: check for any outdated packages, spawn: generate and update packages for you
我希望你喜欢它!:)
欢迎在 Twitter 上与我联系,进行讨论、了解新闻和公告以及其他项目。🚀