我正在创建一个自定义npm脚本,以提醒开发人员升级其节点版本。该脚本使用please-upgrade-node(基本上是他们的示例),并返回退出代码0:
#!/usr/bin/env node
var pkg = require('./package.json');
var pleaseUpgradeNode = require('please-upgrade-node');
pleaseUpgradeNode(pkg, {
exitCode: 1,
message: function(requiredVersion) {
return ('ERROR!! This program requires Node version' + requiredVersion');
}
});
这是我在控制台中运行node please-upgrade-node
时的输出:
ERROR!! This program requires Node version10.10.0
这是我的npm脚本:
"scripts": {
"pun": "node please-upgrade-node",
"build": "webpack",
"dev": "webpack-dev-server --open",
"start:dev": "npm run pun & npm run build & npm run dev"
}
问题是,当我运行npm run start:dev
时,它将指出我需要使用较新版本的node,但是随后的脚本仍将在启动webpack开发服务器的过程中运行。
我认为NPM会取消整个start:dev
脚本,但事实并非如此。以下是npm run start:dev
之后的输出:
> companyInfoHere@0.0.1 start:dev /Users/companyInfoHere
> npm run pun & npm run build & npm run dev
> companyInfoHere@0.0.1 pun /Users/companyInfoHere
> node please-upgrade-node
> companyInfoHere@0.0.1 build /Users/companyInfoHere
> webpack
> companyInfoHere@0.0.1 dev /Users/companyInfoHere
> webpack-dev-server --open
ERROR!! This program requires Node version10.10.0
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! companyInfoHere@0.0.1 pun: `node please-upgrade-node`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the companyInfoHere@0.0.1 pun script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/companyInfoHere/.npm/_logs/2018-12-07T17_39_32_580Z-debug.log
clean-webpack-plugin: /Users/companyInfoHere/dist has been removed.
clean-webpack-plugin: /Users/companyInfoHere/dist has been removed.
ℹ 「wds」: Project is running at http://localhost:8081/
ℹ 「wds」: webpack output is served from /dist/js/
ℹ 「wdm」: wait until bundle finished: /dist/js/main.js
Hash: d84005de56ec80ce9d06
Version: webpack 4.27.1
Time: 2124ms
Built at: 12/07/2018 12:27:33 PM
Asset Size Chunks Chunk Names
main.js 816 KiB main [emitted] main
main.js.map 944 KiB main [emitted] main
manifest.json 76 bytes [emitted]
Entrypoint main = main.js main.js.map
[./node_modules/webpack/buildin/global.js] (webpack)/buildin/global.js 472 bytes {main} [built]
[./src/index.tsx] 189 bytes {main} [built]
+ 13 hidden modules
ℹ 「wdm」: Hash: 2e79b1121cc06c02ad0d
Version: webpack 4.27.1
Time: 2576ms
Built at: 12/07/2018 12:27:34 PM
Asset Size Chunks Chunk Names
main.js 1.11 MiB main [emitted] main
main.js.map 1.29 MiB main [emitted] main
manifest.json 76 bytes [emitted]
Entrypoint main = main.js main.js.map
[0] multi (webpack)-dev-server/client?http://localhost:8081 ./src/index.tsx 40 bytes {main} [built]
[./node_modules/ansi-html/index.js] 4.16 KiB {main} [built]
[./node_modules/ansi-regex/index.js] 135 bytes {main} [built]
[./node_modules/loglevel/lib/loglevel.js] 7.68 KiB {main} [built]
[./node_modules/react-dom/index.js] 1.33 KiB {main} [built]
[./node_modules/react/index.js] 190 bytes {main} [built]
[./node_modules/strip-ansi/index.js] 161 bytes {main} [built]
[./node_modules/url/url.js] 22.8 KiB {main} [built]
[./node_modules/webpack-dev-server/client/index.js?http://localhost:8081] (webpack)-dev-server/client?http://localhost:8081 7.78 KiB {main} [built]
[./node_modules/webpack-dev-server/client/overlay.js] (webpack)-dev-server/client/overlay.js 3.58 KiB {main} [built]
[./node_modules/webpack-dev-server/client/socket.js] (webpack)-dev-server/client/socket.js 1.05 KiB {main} [built]
[./node_modules/webpack/hot sync ^\.\/log$] (webpack)/hot sync nonrecursive ^\.\/log$ 170 bytes {main} [built]
[./node_modules/webpack/hot/emitter.js] (webpack)/hot/emitter.js 75 bytes {main} [built]
[./src/components/app.tsx] 203 bytes {main} [built]
[./src/index.tsx] 189 bytes {main} [built]
+ 24 hidden modules
ℹ 「wdm」: Compiled successfully.
我正在使用以下软件包:
编辑:在示例中添加了正确的退出代码并更改控制台响应
答案 0 :(得分:0)
您希望使用双“&”号(&&
)而不是单“&”号&
。
"scripts": {
"pun": "node please-upgrade-node",
"build": "webpack",
"dev": "webpack-dev-server --open",
"start:dev": "npm run pun && npm run build && npm run dev"
}
&
表示在后台运行进程,而&&
表示AND运算符,如果左手命令成功,它将运行右手命令。基本上就是您想要的。