npm:パッケージのポストインストールスクリプトを無効にする


142

パッケージのインストール中にポストインストールスクリプトを無効にするnpmオプションはありますか?または、package.jsonのフィールドを書き換えるには?


質問は非常に明確ですが... これはあなたの最終目標ですか?github.com/zloirock/core-js#postinstall-message ;-)
拒否

回答:


267

postinstallスクリプトのみを無効にすることはできません。ただし、以下を使用してすべてのスクリプトを無効にすることができます。

$ npm install --ignore-scripts

delbertoooがコメントで言及したように、これは依存関係のスクリプトも無効にします。


2
どうも。これはまさに私が必要とするものです。そのようなオプションはどこにありますか?これは、「npm help install」、「npm help config」、および「npm help scripts」では説明されていません。
farwayer、2014年

3
私はコードを直接チェックしました:github.com/npm/npm/blob/master/lib/build.js#L179
Gergo Erdosi

69
注意!このオプション--ignore-scriptsは、依存関係からであっても、すべてのスクリプトを無効にします。依存関係がスクリプトを実行する必要がある場合、たとえばいくつかのバイナリをインストールする場合、依存関係が壊れる/不完全になる可能性があります。
delbertooo 2015年

7
それでは、node_modules(およびそのすべてのスクリプト)をインストールして、メインパッケージのスクリプトのみを無視する手法はありますか?
デリック

3
これだけでなく--ignore-scripts、または関連する構成オプション(私がグローバルに設定)npm run startは、何も通知せずに何もせずに成功を報告することも意味します。驚いた。
Ash Berlin-Taylor


4

あなた自身のライブラリのためにこれを行うには、次のような簡単なものをお勧めします:

#!/usr/bin/env bash

## this is your postinstall.sh script:

set -e;

if [ "$your_pkg_skip_postinstall" == "yes" ]; then
  echo "skipping your package's postinstall routine.";
  exit 0;
fi

次に、npmを次のようにインストールします。

your_pkg_skip_postinstall="yes" npm install

1
ありがとう!これは、すべての依存関係のすべてのスクリプトではなく、独自のスクリプトを無効にしようとしている場合に最適です。
Brian Neisler、2018年

@BrianNeislerよろしくお願いします。他の人を助けるのにいつも気持ちがいいです。ちなみに、ほとんどの場合、ダブルブラケット[[]]はシングルブラケットよりも良いと思いますが、確かではありません。
Alexander Mills

2

プロジェクトのポストインストールスクリプトを無効にしたかったのですが、実行時にプロジェクトの依存関係のすべてのスクリプトを実行したいと思いましたnpm install。これは私がやったことです。

  1. スクリプトを作成する ./scripts/skip.js
if (process.env.SKIP_BUILD) {
    process.exit(0);
} else {
    process.exit(1);
}
  1. package.jsonファイル
 "scripts": {
  ...
  "postinstall": "node ./scripts/skip.js || npm run build",
  ...
 }

ここで、環境変数SKIP_BUILD = 1を設定して、パッケージがビルドされないようにし、依存関係が正しくビルドされるようにします

SKIP_BUILD=1 npm install
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.