我的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。
答案 0 :(得分: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。
我希望这对你有所帮助