web-dev-qa-db-ja.com

Swift Package Managerを使用してSwiftLintをiOSアプリに統合する方法は?

Xcode 11(ベータ5)で新しいiOSアプリを作成しています。依存関係を管理するために、CocoaPodsではなくSwift Package Managerを使用してみます。

SwiftLintとCocoaPodsを使用するときの一般的なパターンは、SwiftLintを依存関係として追加してから、ビルドフェーズを追加して${PODS_ROOT}/SwiftLint/swiftlintを実行することです。これにより、すべての開発者が同じバージョンのSwiftLintを使用することになります。

XcodeでSwiftLintをSwiftPM依存関係として追加しようとすると、必要な実行可能ターゲットが無効になります。

Add Package Screenshot

製品やターゲットなしでダミーの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パッケージマネージャーは、この特定のユースケースに適したツールではありませんか?

5
jjoelson

ビルドツールを実行するためにiOSコードの依存関係マネージャーを悪用するすべてのメソッドは、奇抜で奇妙です。

SPM準拠のツールの依存関係をバージョン管理する正しい方法は Mint:インストールして実行するパッケージマネージャーSwift CLIパッケージ です。以下も参照してください Better iOSプロジェクト:mint を使用してツールを管理する方法。

1
Alex Curylo