Swift Package Plugin
Swift Package Plugin とは?
Swift Package マニフェストのように、PackagePlugin API を利用する Swift スクリプト。
Xcode, Swift Package Manager の機能を拡張する
Swift や Xcode でアクションを実行可能な Swift スクリプト。Swift Package として実装する。1 つのパッケージ内に複数のプラグインを実装したり、他のライブラリや executable と共に実装することもできる。Swift スクリプトは複数ファイル利用することも可能。
専用のプラグインはその Swift Package 内でのみ利用可能とすることもできるが、外部から参照させたい汎用的なプラグインの場合には prudct として定義できる。plugin を依存関係に持った場合、plugin の依存は App にランタイムコンテンツを提供せず、ビルド実行環境の開発ツールへのアクセスを許可する。
Xcode は plugin をビルドする
plugin は Sandbox 内で実行される
ネットワークアクセスや plugin のワーキングディレクトリ以外の非一時的な箇所への書き込みは禁止されている
in-build command
出力が入力より古くなったら適宜実行される
pre-build command
明悪な出力がない場合にビルドの開始時に実行する
毎回実行されるので注意が必要
プラグインの種類
Command Plugin
SwiftPM の CLI のカスタムコマンドや、Xcode のメニュー項目からいつでも実行できるカスタムアクション
formatter, linter, 開発タスク (ライセンスの更新, 著作権日付の更新, ...etc)
Build tool Plugin
ビルド前もしくはビルド中に実行できるカスタムビルドタスク
ソースコード自動生成, リソース生成, ...etc
作成する
custom command はパッケージのルートで実行される
プラグイン API
Xcode 13/Swift 5.6 からプラグイン API が利用できるようになった。
Meet Swift Package plugins - WWDC 2022
Create Swift Package plugins - WWDC 2022
https://blog.eidinger.info/five-tips-for-swift-package-plugin-development