Skip to content

npm のパッケージは package.jsonライフサイクルスクリプト を定義できます。最も一般的なものを以下に示しますが、他にもたくさんあります

  • preinstall: パッケージがインストールされる前に実行されます
  • postinstall: パッケージがインストールされた後に実行されます
  • preuninstall: パッケージがアンインストールされる前に実行されます
  • prepublishOnly: パッケージが公開される前に実行されます

これらのスクリプトは、パッケージマネージャーが適切なタイミングで読み込んで実行することが期待される任意のシェルコマンドです。しかし、任意のスクリプトを実行することは潜在的なセキュリティリスクを表すため、他の npm クライアントとは異なり、Bun はデフォルトで任意のライフサイクルスクリプトを実行しません。


postinstall

postinstall スクリプトは特に重要です。これは、ネイティブ Node.js アドオン として実装されているパッケージのプラットフォーム固有のバイナリをビルドまたはインストールするために広く使用されています。例えば、node-sass は Sass のネイティブバイナリをビルドするために postinstall を使用する人気のあるパッケージです。

json
{
  "name": "my-app",
  "version": "1.0.0",
  "dependencies": {
    "node-sass": "^6.0.1"
  }
}

trustedDependencies

任意のスクリプトを実行する代わりに、Bun は「デフォルトでセキュア」なアプローチを使用します。特定のパッケージを許可リストに追加でき、Bun はそれらのパッケージのライフサイクルスクリプトを実行します。特定のパッケージのライフサイクルスクリプトを Bun に許可させるには、package.jsontrustedDependencies 配列にパッケージ名を追加します。

json
{
  "name": "my-app",
  "version": "1.0.0",
  "trustedDependencies": ["node-sass"] 
}

trustedDependencies に追加されたら、パッケージをインストール/再インストールします。Bun はこのフィールドを読み取り、my-trusted-package のライフサイクルスクリプトを実行します。

ライフサイクルスクリプトを持つ上位 500 の npm パッケージはデフォルトで許可されています。完全なリストはこちら で確認できます。


--ignore-scripts

すべてのパッケージのライフサイクルスクリプトを無効にするには、--ignore-scripts フラグを使用します。

bash
bun install --ignore-scripts

Bun by www.bunjs.com.cn 編集