私はVS2015でAngular2アプリケーションを開発しており、同じためにwebpackバンドルとミニファイ環境をセットアップしています。
これは私のwebpack.conf.jsです
switch (process.env.NODE_ENV) {
case 'prod':
case 'production':
module.exports = require('./config/webpack.prod');
break;
case 'test':
case 'testing':
//module.exports = require('./config/webpack.test');
break;
case 'dev':
case 'development':
default:
module.exports = require('./config/webpack.dev');
}
次のコマンドでこれを呼び出すwebpackタスクランナーもインストールしました
cmd /c SET NODE_ENV=development&& webpack -d --color
そして
cmd /c SET NODE_ENV=production&& webpack -p --color
セットアップは正常に動作するようです。ただし、これをTFSビルドCIと統合したいと考えています。プロジェクトがビルドされた後、webpackコマンドが起動し、webpackのビルドが失敗した場合にビルドの失敗を報告します。 .csprojファイルに次のコードを組み込もうとしました
<Target Name="AfterBuild">
<Exec Condition="$(Configuration) == 'Debug'" Command="cmd /c SET NODE_ENV=production&& webpack -p --color">
</Exec>
</Target>
エラー9009で失敗しました
その後、試しに、webpackがインストールされているnode_modulesフォルダからコマンドを起動しました
<Target Name="AfterBuild">
<Exec Condition="$(Configuration) == 'Debug'" Command="./node_modules/.bin cmd /c SET NODE_ENV=production&& webpack -p --color">
</Exec>
</Target>
まだ無駄です。これが機能しても、webpackでエラーが発生した場合にVSビルドが失敗するかどうかはわかりません。
これをどうやって進めますか?
開発モードと本番モード用にさまざまなスクリプトをpackage.jsonに配置します。次に、ビジュアルスタジオの「AfterBuild」イベントで、さまざまな構成でこれらのスクリプトを呼び出します。
次の2つのスクリプト'buildDev'および'buildProd'をpackage.jsonに追加します。
"scripts": {
"buildDev": "SET NODE_ENV=development && webpack -d --color",
"buildProd": "SET NODE_ENV=production && webpack -p --color",
}
Visual StudioのAfterBuildイベントで、次の2つの条件コマンドを追加します。
<Target Name="AfterBuild">
<Exec Condition="$(Configuration) == 'Debug'" Command="npm run buildDev" />
<Exec Condition="$(Configuration) == 'Release'" Command="npm run buildProd" />
</Target>
そして最後に、このようなwebpack.conf.js:
switch (process.env.NODE_ENV.trim()) {
case 'prod':
case 'production':
module.exports = require('./config/webpack.prod');
break;
case 'dev':
case 'development':
default:
module.exports = require('./config/webpack.dev');
break;
}
重要な注意:必ずprocess.env.NODE_ENVでtrim()関数を使用して、cmdがコマンドの空白スペース"SET NODE_ENV = development && webpack -d --color/を文字として追加し、NODE_ENV変数に追加します。したがって、「development」として設定します、実際には(development + whitespace)として設定されます。