2016-11-23 13 views
9

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

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

答えて

12

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

Packages are Git repositories, tagged with semantic versions, containing a Package.swift file at their root. Initializing the package created a Package.swift file, but to make it a usable package we need to initialize a Git repository with at least one version tag.

Swift Package Manager Documentationも「あなたが任意の有効なスウィフトパッケージへのURL(またはローカルパス)を指定することができます」と述べていると、ローカルファイルを参照して例Package.swiftを提供します:.Package(url: "../StringExtensions", "1.0.0")

:私はスウィフトパッケージマネージャはローカルパスを参照できることを明確にするために答えを編集しますが、パス必見がタグ付きの有効なGitリポジトリを含んでいます。私のオリジナルのテストプロジェクトは、.gitディレクトリを含む従属ローカルパスを指していたので、swift buildで正常に構築されました。スウィフト4バージョンのツールを使用

+0

は動作しませんでした。私は 'エラー:ディレクトリのパス... Gitリポジトリではありません'を得ました。パッケージ管理者がgit repoとして受け取ったのはなぜでしょうか? –

+0

おそらくそれは暗黙のうちですが、Package/repoの変更のためには、そのバージョンのタグ/バージョンを明らかに更新する必要がありますローカルで利用できるようになります。たとえば、変更前の1.0.0だった場合は、タグを1.0.1に更新する必要があります。少なくともこれはこれまでの私の経験でした。 (これは将来的にこの動作が変化することを願っています)。 –

3

は、あなたがタグ付けされたバージョンを提供する必要はありませんどこthis--を行うためのさまざまな手段があります:

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

も参照してください:https://github.com/apple/swift-package-manager/blob/master/Documentation/PackageDescriptionV4.md

+0

私はこのことについて一つの注意点を見ています。あなたのコンパイルに合わせて変更をコミットする必要があります。あなたは '迅速なパッケージアップデート 'もやらなければならないようです。 –

関連する問題