包含括号语法错误的NPM脚本

问题描述 投票:4回答:1

我的package.json中有以下NPM脚本:

{
  "scripts": {
     "lint": "tslint -c tslint.json src/**/**?(.test).ts?(x)"
  }
}

在我运行npm run lint后,我收到以下错误:

> tslint -c tslint.json src/**/**?(.test).ts?(x)

sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `tslint -c tslint.json src/**/**?(.test).ts?(x)'

似乎我不能使用该字符(在我的NPM脚本中。我怎么能解决这个问题?脚本是一个有效的bash脚本。

我试着搜索这个问题,但我找不到任何有用的东西。

任何帮助表示赞赏。

好的谢谢!

更新:

似乎在我的终端(macOS)中运行此命令是这样的:

bash -c "tslint -c tslint.json src/**/**?(.test).ts?(x)"

我得到完全相同的错误。

但是,如果我像这样运行它:

bash -c "tslint -c tslint.json src/**/**?\(.test\).ts?\(x\)"

它似乎在终端工作。但不是在NPM脚本中。

得到这样的工作:

{
   "scripts": {
      "lint": "bash -c \"tslint -c tslint.json 'src/**/**?(.test).ts?(x)'\"",
   }
}

或更简单的版本

{
   "scripts": {
      "lint": "tslint -c tslint.json 'src/**/**?(.test).ts?(x)'",
    }
}

积分转到@shellter。

node.js bash npm
1个回答
3
投票

我曾写过这个脚本,对我的javascript文件进行基本语法检查:

#!/usr/bin/env bash
if [ -x "$(command -v parallel)" ]; then
    find src/js -name "*.js" | parallel --no-notice --jobs 4 --gnu nodejs -c
else
    find src/js -name "*.js" | xargs -L1 -d '\n' nodejs -c
fi

这将lint src / js中的每个javascript文件并使用并行(如果可用)。如果您的cpu包含更多线程,则可能需要增加jobs参数以匹配thread-count。

我希望这对你有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.