NPM脚本忽略错误。

21

我目前拥有一个运行linter的npm脚本。显然会输出一些错误,但是npm脚本失败了,而不只是显示错误并继续执行。

这很糟糕,尤其当有其他东西调用该脚本时,它会完美地使一切崩溃。我可以始终运行npm run lint --force来避免错误,但我并不总是有这种--force的奢侈条件(例如,在git-hook中)。

我该如何设置我的脚本以输出错误而不会制造混乱?

3个回答

27

找到答案了:

只需在命令的结尾添加:exit 0 就可以了!


这对我不起作用。您是在终端命令中编写exit 0还是在诸如package.json之类的文件中编写? - BeniaminoBaggins
18
@Beniamino_Baggins,我假设您现在已经解决了这个问题,但是我的解决方案是将以下内容添加到npm脚本中的“webpack”命令中:“webpack || exit 0”。 - E. Sundin
我猜在Windows上,你只需要添加“& rem”就行了。 - Nyerguds

18

还有一些其他的选项也是跨平台的:

eslint || true

如果在Windows上使用,您需要先npm install cash-true

exitzero eslint

您需要先npm install exitzero


2
这应该是正确的答案,因为它与Windows兼容。 - scipper
2
谢谢这个。对于像'mkdir'这样的东西非常方便,因为文件夹可能已经存在。 - Peanut
我进行了一项测试,在我的配置中,PowerShell 抱怨“'true' 不被认为是内部或外部命令、可操作的程序或批处理文件。” - ilg

2

我想在npm脚本中解决这个问题总是有点受限。有一个微型模块runjs,它是一种小型脚本增强工具。它可以运行cli命令并在JS中处理错误。所以你可以像这样做(runfile.js):

import { run } from 'runjs'

export function lint () {
  try {
    run('eslint .')
  } catch (e) {
    // handle error how you want, you can silently just do nothing or re-throw it by: throw e.stack
  }
}

然后在控制台中:

$ run lint

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