npm のパッケージは package.json で ライフサイクルスクリプト を定義できます。最も一般的なものを以下に示しますが、他にもたくさんあります。
preinstall: パッケージがインストールされる前に実行されますpostinstall: パッケージがインストールされた後に実行されますpreuninstall: パッケージがアンインストールされる前に実行されますprepublishOnly: パッケージが公開される前に実行されます
これらのスクリプトは、パッケージマネージャーが適切なタイミングで読み込んで実行することが期待される任意のシェルコマンドです。しかし、任意のスクリプトを実行することは潜在的なセキュリティリスクを表すため、他の npm クライアントとは異なり、Bun はデフォルトで任意のライフサイクルスクリプトを実行しません。
postinstall
postinstall スクリプトは特に重要です。これは、ネイティブ Node.js アドオン として実装されているパッケージのプラットフォーム固有のバイナリをビルドまたはインストールするために広く使用されています。例えば、node-sass は Sass のネイティブバイナリをビルドするために postinstall を使用する人気のあるパッケージです。
{
"name": "my-app",
"version": "1.0.0",
"dependencies": {
"node-sass": "^6.0.1"
}
}trustedDependencies
任意のスクリプトを実行する代わりに、Bun は「デフォルトでセキュア」なアプローチを使用します。特定のパッケージを許可リストに追加でき、Bun はそれらのパッケージのライフサイクルスクリプトを実行します。特定のパッケージのライフサイクルスクリプトを Bun に許可させるには、package.json の trustedDependencies 配列にパッケージ名を追加します。
{
"name": "my-app",
"version": "1.0.0",
"trustedDependencies": ["node-sass"]
}trustedDependencies に追加されたら、パッケージをインストール/再インストールします。Bun はこのフィールドを読み取り、my-trusted-package のライフサイクルスクリプトを実行します。
ライフサイクルスクリプトを持つ上位 500 の npm パッケージはデフォルトで許可されています。完全なリストはこちら で確認できます。
--ignore-scripts
すべてのパッケージのライフサイクルスクリプトを無効にするには、--ignore-scripts フラグを使用します。
bun install --ignore-scripts