web-dev-qa-db-ja.com

Swiftパッケージマネージャーでローカルモジュールを作成できますか?

Swiftパッケージマネージャーはプロジェクトのモジュールとしてgithubからコードをコンパイルできることは知っていますが、代わりにコンピューターにローカルに保存されているコードをコンパイルするようにパッケージマネージャーに指示できますか?

プロジェクトの残りの部分から分離したいコードがあるので、それをフォルダーに保存すると、Swiftコンパイラーがコードをビルドして、そのコードをインポートできるようにします。他のモジュールと同じように。

15
taylor swift

Package.Swiftファイルでローカルディレクトリを参照できますが、それはGitリポジトリである必要があります。また、リポジトリの初期化、コミット、およびタグ付けだけでは不十分です。 Swift buildが正しく機能するには、リポジトリをリモートにプッシュする必要があります。

SwiftPM使用ガイド によると:

パッケージはGitリポジトリであり、セマンティックバージョンでタグ付けされており、ルートにPackage.Swiftファイルが含まれています。パッケージを初期化するとPackage.Swiftファイルが作成されましたが、それを使用可能なパッケージにするには、少なくとも1つのバージョンタグを使用してGitリポジトリを初期化する必要があります。

Swift PackageManagerのドキュメント は、「任意の有効なSwiftパッケージ)へのURL(またはローカルパス)を指定できます」と述べ、ローカルファイルを使用したPackage.Swiftの例を示しています。参照:.Package(url: "../StringExtensions", "1.0.0")

:回答を編集して、Swift Package Managerはローカルパスを参照できますが、パスmustには、タグ付きの有効なGitリポジトリが含まれている必要があります。元のテストプロジェクトは、.gitディレクトリを含む依存ローカルパスを指しているため、Swift buildで正常にビルドされました。

14

Swift 4バージョンのツールを使用すると、これを行うためのさまざまな方法があります。タグ付きバージョンを提供する必要はありません。

.package(url: "<path to repo>", .branch("master")),

参照: https://github.com/Apple/Swift-package-manager/blob/master/Documentation/PackageDescriptionV4.md

16
Chris Prince

使用することもできます

.package(path: "path to folder")

追加のgitリポジトリのオーバーヘッドが必要ない場合。

5
rounak