node.js 開発者の必須知識:npm の postinstall スクリプトを制御する方法
Node.js の npm におけるパッケージの postinstall スクリプトの無効化
npm の postinstall
スクリプトは、パッケージがインストールされた後に自動的に実行されるスクリプトです。これは、依存関係のインストール、ネイティブモジュールのコンパイル、またはその他のセットアップタスクを実行するために役立ちます。
しかし、場合によっては、特定のパッケージの postinstall
スクリプトを実行したくない場合があります。例えば、スクリプトが不要な依存関係をインストールしたり、システム設定を変更したり、セキュリティ上のリスクがあったりする可能性があります。
無効化の方法
npm の postinstall
スクリプトを無効化するには、いくつかの方法があります。
--ignore-scripts フラグを使用する
npm install
コマンドに --ignore-scripts
フラグを指定すると、すべての postinstall
スクリプトが無効化されます。これは、すべての npm パッケージのスクリプト実行を無効化したい場合に役立ちます。
npm install --ignore-scripts <package-name>
環境変数 SKIP_POSTINSTALL を設定する
SKIP_POSTINSTALL
環境変数を true
に設定すると、現在の npm インストールの postinstall
スクリプトが無効化されます。これは、一時的に特定のパッケージのスクリプト実行を無効化したい場合に役立ちます。
SKIP_POSTINSTALL=true npm install <package-name>
package.json
ファイルで、無効化したいパッケージの postinstall
スクリプトを削除または空の文字列に設定できます。これは、永続的に特定のパッケージのスクリプト実行を無効化したい場合に役立ちます。
{
"dependencies": {
"<package-name>": {
"postinstall": ""
}
}
}
npx を使用する
npx
コマンドを使用して、特定のパッケージの postinstall
スクリプトを明示的にスキップできます。
npx --no-install <package-name>
注意事項
--ignore-scripts
フラグとSKIP_POSTINSTALL
環境変数は、グローバルにpostinstall
スクリプトを無効化します。これは、すべての npm インストールに影響を与えるため、注意して使用する必要があります。package.json
ファイルの編集は、そのパッケージに固有の影響しか与えません。npx
コマンドは、個々のpostinstall
スクリプトを無効化するためにのみ使用できます。
上記以外にも、npm の postinstall
スクリプトを無効化する方法があります。例えば、サードパーティ製のツールを使用したり、カスタムスクリプトを作成したりすることもできます。
npm install --ignore-scripts <package-name>
SKIP_POSTINSTALL=true npm install <package-name>
package.json を編集する
{
"dependencies": {
"<package-name>": {
"postinstall": ""
}
}
}
npx --no-install <package-name>
説明
上記のサンプルコードは、いずれも my-package
という名前のパッケージの postinstall
スクリプトを無効化する方法を示しています。
npm の postinstall スクリプトを無効化するその他的方法
サードパーティ製のツールを使用する
いくつかのサードパーティ製のツールを使用して、npm の postinstall
スクリプトを無効化できます。例えば、以下のようなツールがあります。
これらのツールは、package.json
ファイルを編集したり、環境変数を設定したりする必要なく、postinstall
スクリプトを無効化することができます。
カスタムスクリプトを作成して、postinstall
スクリプトを無効化することもできます。例えば、以下のようなスクリプトを作成できます。
#!/bin/bash
# `postinstall` スクリプトをスキップする
exit 0
このスクリプトを package.json
ファイルの preinstall
スクリプトとして設定すると、postinstall
スクリプトが実行される前に実行されます。
npm link
コマンドを使用して、ローカルのパッケージをグローバルにリンクすることもできます。これにより、postinstall
スクリプトを実行せずに、パッケージをインストールすることができます。
npm link <package-name>
- サードパーティ製のツールを使用する場合は、そのツールのドキュメントをよく読んでから使用してください。
- カスタムスクリプトを作成する場合は、スクリプトが誤動作しないように注意してください。
npm link
を使用する場合は、グローバルにリンクされたパッケージをアンインストールする必要があることを忘れないでください。
node.js npm