28

dev と prod の 2 つの主要なビルド構成があります。npm install --production を実行してアプリをインストールする heroku サーバーに更新をプッシュします。package.json には、次のセグメントがあります。

"scripts": {
    "postinstall": "make install"
}

コードやその他のマイナーなものを醜くする原因となるメイクファイルを実行します。

ただし、この makefile を開発モードで実行する必要はありません。npmで条件付きでスクリプトを実行する方法はありますか?..

ありがとう!

4

4 に答える 4

54

このようなものを定義することができます(ステートメントpackage.jsonのより良い省略形があると確信しています。)if

"scripts": {
    "postinstall":"if test \"$NODE_ENV\" = \"production\" ; then make install ; fi "
}

npm次に、すでに述べたように生産フラグを付けて実行すると

npm install --production

make install設定されるため、実行されます$NODE_ENV = production


いくつかのタスクを条件付きで実行する必要がある場合、環境変数をスクリプト/プログラムに渡し、スクリプト/プログラムがそのロジックを処理します。このようにスクリプトを実行します

NODE_ENV=dev npm run build

package.json、スクリプト/プログラムを開始します

"scripts": {
    "build":"node runner.js"
}

これは、環境変数の値をチェックして、何をすべきかを決定します。私はrunner.js次のようなことをします

if (process.env.NODE_ENV){
  switch(process.env.NODE_ENV){
    ....
  }
}
于 2016-02-24T06:07:35.837 に答える
1

devDependencies の下の .json に別のセクションを追加できませんか? 次に、npm install を実行すると、devDependincies で指定されたパッケージがインストールされ、npm install --production は通常の依存関係をインストールします。

于 2013-09-12T23:42:05.313 に答える
1

コードの見栄えを悪くするために別の方法を取ることをお勧めします。connect-browserifyまたはさらに強力なasset-rackをご覧ください。

これらは、インストール時ではなく、Express サーバーの起動時にコードを自動的に醜くする可能性があります。また、開発と本番で異なることを行うように構成できます。

于 2013-09-13T01:52:38.037 に答える