如何让project.json中的脚本仅在调试时执行

时间:2017-01-13 19:41:30

标签: node.js npm

所以我有我的preublish脚本,它在prod中运行webpack

"scripts": {
  "prepublish": [
    "npm install",
    "node node_modules/webpack/bin/webpack.js --env.prod"
 ],
  "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]

但是如何在这里运行只在调试中执行的脚本?

我想要实现的是每次项目在调试模式下构建时都不使用--env.prod运行webpack。

2 个答案:

答案 0 :(得分:0)

您可以编写一个shell脚本来检查NODE_ENV并使用或不使用--env.prod运行webpack,具体取决于结果:

"scripts": {
  "prepublish": "./scripts/prepublish"
}

脚本/ prepublish:

#!/bin/bash

npm install
if [[ $NODE_ENV = "production" ]]; then
    node node_modules/webpack/bin/webpack.js --env.prod
else
    node node_modules/webpack/bin/webpack.js
fi

答案 1 :(得分:0)

优雅的解决方案是在生产环境中设置环境变量,例如:"scripts": { "prepublish": "webpack $WEBPACK_FLAGS" } 。然后你可以这样做:

"scripts": {
  "prepublish": "webpack --env.$NODE_ENV"
}

或者您可以直接传递该值:

"scripts": {
  "prepublish": "if [[ $NODE_ENV = "prod" ]]; then webpack --env.prod"; else webpack; fi"
}

你也可以像SimpleJ建议的那样做一个if语句:

webpack

我可能会弄错,但我相信webpack会始终与node node_modules/webpack/bin/webpack.js混淆,以便您可以将webpack替换为def get_rolling_amount(grp, freq): return grp.rolling(freq, on='date')['amount'].sum() df['rolling_sales_180'] = df.groupby('name', as_index=False, group_keys=False) \ .apply(get_rolling_amount, '180D')