Xcode 11(ベータ5)で新しいiOSアプリを作成しています。依存関係を管理するために、CocoaPodsではなくSwift Package Managerを使用してみます。
SwiftLintとCocoaPodsを使用するときの一般的なパターンは、SwiftLintを依存関係として追加してから、ビルドフェーズを追加して${PODS_ROOT}/SwiftLint/swiftlint
を実行することです。これにより、すべての開発者が同じバージョンのSwiftLintを使用することになります。
XcodeでSwiftLintをSwiftPM依存関係として追加しようとすると、必要な実行可能ターゲットが無効になります。
製品やターゲットなしでダミーのPackage.Swift
を作成し、ビルドフェーズでSwift run swiftlint
を実行することでそれを偽造することができましたが、ハックで奇妙な感じがします:
// Swift-tools-version:5.1
import PackageDescription
let package = Package(
name: "dummy-package",
products: [],
dependencies: [
.package(url: "https://github.com/realm/SwiftLint.git", from: "0.34.0")
],
targets: []
)
ダミーパッケージを作成せずにこれを行う方法はありますか?または、Swiftパッケージマネージャーは、この特定のユースケースに適したツールではありませんか?
ビルドツールを実行するためにiOSコードの依存関係マネージャーを悪用するすべてのメソッドは、奇抜で奇妙です。
SPM準拠のツールの依存関係をバージョン管理する正しい方法は Mint:インストールして実行するパッケージマネージャーSwift CLIパッケージ です。以下も参照してください Better iOSプロジェクト:mint を使用してツールを管理する方法。