您如何在npm脚本中正确使用parallelshell?

dpb*_*178 4 node.js npm npm-scripts

我正在尝试将并行外壳与Windows上的节点项目一起使用,以同时运行两个进程。

这是我的package.json文件的脚本部分:

"scripts": {
"start": "npm run watch:all",
"test": "echo \"Error: no test specified\" && exit 1",
"lite": "lite-server",
"scss": "node-sass -o css/ css/",
"watch:scss": "onchange \"css/*.scss\" -- npm run scss",
"watch:all": "parallelshell \"npm run watch:scss\" \"npm run lite\""
Run Code Online (Sandbox Code Playgroud)

}

当我运行命令时,出现npm start以下错误日志:

TypeError [ERR_INVALID_ARG_TYPE]: The "options.cwd" property must be of type string. Received type function
at normalizeSpawnArguments (child_process.js:420:11)
at spawn (child_process.js:522:38)
at C:\Users\Daniel\Documents\development\online_classes\coursera_uhk_web_dev\Bootstrap4\conFusion\node_modules\parallelshell\index.js:104:17
at Array.forEach (<anonymous>)
at Object.<anonymous> (C:\Users\Daniel\Documents\development\online_classes\coursera_uhk_web_dev\Bootstrap4\conFusion\node_modules\parallelshell\index.js:100:6)
at Module._compile (internal/modules/cjs/loader.js:702:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! confusion@1.0.0 watch:all: `parallelshell "npm run watch:scss" "npm run lite"`

npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the confusion@1.0.0 watch:all script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
Run Code Online (Sandbox Code Playgroud)

我的语法有问题吗?我可以单独运行命令npm run watch:scssnpm run lite并且它们可以正常运行,但是我无法运行parallelshell命令。

谢谢!

Sri*_*r C 10

尝试将并行Shell版本从3.0.2降级到3.0.1

根据声明,这只是临时解决方案。

https://github.com/darkguy2008/parallelshell/issues/57

以下是降级parallelshell的命令行语法:

sudo npm uninstall --save-dev parallelshell@3.0.2

sudo npm install --save-dev parallelshell@3.0.1
Run Code Online (Sandbox Code Playgroud)

它为我工作。

希望这会有所帮助,并告诉我们。


小智 7

parallelshell 在每次使用时都会出现活动错误。这里的替代方案是使用npm-run-all dev-dependency,而不是 parallelshell 。

安装 npm-run-all

npm install --save-dev npm-run-all
Run Code Online (Sandbox Code Playgroud)

然后在如下所示的 package.json 脚本中进行主动更改。

 "scripts": {
    "start": "npm run dev",
    "test": "echo \"Error: no test specified\" && exit 1",
    "lite": "lite-server",
    "scss": "node-sass -o css/ css/",
    "watch:scss": "onchange \"css/*.scss\" -- npm run scss",
    "dev": "npm-run-all -p watch:scss lite"
  }
Run Code Online (Sandbox Code Playgroud)


小智 0

在我看来,它是正确的,您可以在双引号内使用单引号,而不是转义双引号。

不确定这是否会有所作为。

"watch:all": "parallelshell 'npm run watch:scss' 'npm run lite'"
Run Code Online (Sandbox Code Playgroud)