运行 npm 脚本中的 2 个命令(nodemon && sass --watch)

Running 2 commands in npm script(nodemon && sass --watch)

我有一个 package.json 文件看起来像这样。


"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node src/app.js",
    "dev": "nodemon src/app.js -e js,hbs ",
    "scss": "sass --watch public/scss:public/css",
    "both": "nodemon src/app.js -e js,hbs && sass --watch public/scss:public/css",
    "both2" : "npm run dev && npm run scss"
  },

我想知道为什么我不能 运行 这 2 个命令:

"both": "nodemon src/app.js -e js,hbs && sass --watch public/scss:public/css"

来自

npm run both

当我尝试 运行 它时,只有第一个命令有效。

Github 存储库在下面,以防万一你需要一些测试。

https://github.com/tuanphanfi/weather-app-nodejs/

使用名为 concurrently.

的包
npm install concurrently

然后你可以制作一个名为both

的脚本
"both": "concurrently \"nodemon src/app.js -e js,hbs\" \"sass --watch public/scss:public/css\""

在 UNIX-like 系统上,您可以只使用 & 而不是 && 来链接你的命令。 & 用于并行脚本执行&& 导致顺序执行,这意味着第二个仅在第一个已成功完成。

cmd1 &  cmd2 & ...     # parallel 
cmd1 && cmd2 && ...    # sequential 

而在 Windows-Systems 上,在每个命令前加上 start 并用 && 链接它们似乎可以解决问题...

start cmd1 && start cmd2 && start ... 

cross-platform 解,参见 f。一世。 concurrently, like Namko suggests, or npm-run-all。这些也解决了其他问题,这些问题在使用上述 platform-specific 解决方案时可能会或可能不会发生(例如 weired/mixed terminal-outputs、多个 terminals/windows、对 process/thread-termination等)...