运行npm脚本时忽略错误(连续执行)。

25
每次我构建我的项目以进行服务时,我必须执行三个脚本:
npm run build:local     //calls tsc to compile ts into js files
npm run build:webpack   //invokes webpack to bundle js files into one minified file 
npm run serve           //runs my lite-server to preview files

我希望按照顺序依次运行以下命令:

npm run build:local && npm run build:webpack && npm run serve

然而,由于我需要在我的ts文件中使用一些JQuery,所以在npm run build:local期间会出现错误,抛出Cannot find name '$'.的错误。但是,我的代码仍然编译它,并且那一行对我的项目至关重要,因此它需要存在(目前)。该错误停止了脚本的顺序执行。有没有办法忽略错误并继续向下执行链?


这是一个关于你正在运行的shell而不是npm的问题。你使用的是什么shell? - TimoStaudinger
@Timo 抱歉!我正在bash中运行。 - user3334871
2
@TimoStaudinger 实际上,我认为这应该是一个关于如何仅使用NPM进行跨平台操作的问题。太多的NPM脚本使用特定于shell的功能来完成可以通过正确方法在跨平台上完成的任务。请注意,被接受的答案建议使用npm-run-all,它确实是跨平台的。 - Stijn de Witt
3个回答

59
试一试这个:

尝试一下:

npm run build:local ; npm run build:webpack && npm run serve

我认为 && 的意思是“只有在上一个命令没有出错的情况下才运行下一个命令”。而;的意思是“无论上一个命令发生了什么,都要运行下一个命令。” 还有一个||,它的意思是“只有在上一个命令出错的情况下才运行下一个命令。” 对于像npm run build:local || echo "The build failed!"这样的事情很方便。
如果您安装了npm-run-all,还可以执行以下操作。
npm-run-all -s -c build:local build:webpack serve
  • -s:按序列运行
  • -c:错误继续执行

这个对我没用,这是我在package.json脚本中的内容: { "sample:test": "npm run lint:app:some-viewer;npm run lint:app:some-viewer-e2e"}错误:缺少脚本:lint:app:some-viewer;npm - bharath muppa
你的问题与此问题无关。请发布一个新问题并描述你的操作系统和环境。 - Allen Luce

5
你可以选择
npm run build:local; npm run build:webpack; npm run serve

您可以在此处了解更多关于为什么这样做的信息。


它对我没用。 package.json"sample:test": "npm run lint:app:some-viewer;npm run lint:app:some-viewer-e2e", - bharath muppa

3
你也可以在bash中这样做:
(npm run build:local || true) && (npm run build:webpack || true) && (npm run serve || true)

您可以将其作为独立脚本在 package.json 文件中进行别名设置:
bar: (npm run build:local || true) && (npm run build:webpack || true) && (npm run serve || true)

("bar" = "构建和运行")

并且运行为:

npm run bar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接