【问题标题】:npm scripts ignore errorsnpm 脚本忽略错误
【发布时间】:2017-11-17 19:39:25
【问题描述】:

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

这很糟糕,尤其是当我有其他东西调用脚本时,因为它惊人地破坏了一切。我总是可以运行npm run lint --force 以避免错误,但我并没有一直拥有--force 的奢侈(例如,使用 git-hook)。

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

【问题讨论】:

    标签: node.js git npm


    【解决方案1】:

    找到答案:

    只需在命令末尾添加:exit 0 即可!

    【讨论】:

    • 这对我不起作用。你是在终端命令中写exit 0还是在package.json等文件中写?
    • @Beniamino_Baggins 我假设你现在已经解决了这个问题,但我的解决方案是 npm 脚本"webpack": "webpack || exit 0" 的以下内容。
    • 我猜在 Windows 上你可以添加`&rem`
    【解决方案2】:

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

    eslint || true

    要在 Windows 上运行,您需要先npm install cash-true

    exitzero eslint

    您需要先npm install exitzero

    【讨论】:

    • 这应该是正确的答案,因为兼容windows。
    • 谢谢。对于文件夹可能已经存在的“mkdir”之类的东西非常方便。
    • 我做了一个测试,在我的配置中,PowerShell 抱怨“'true' 未被识别为内部或外部命令、可运行程序或批处理文件。”
    【解决方案3】:

    我想在npm scripts 中解决这个问题总是有点受限。有一个微模块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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-07
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多