【发布时间】:2019-01-27 06:14:19
【问题描述】:
我正在尝试创建一个clean npm 脚本,但我继续在控制台中收到错误,或者没有发生预期的效果。我正在尝试删除除一些配置文件之外的所有根 JavaScript 文件。
以下删除所有忽略否定语法的文件
"clean": "rm -rf lib [a-z].js !*.config.js !*.support.js"
以下在控制台中抛出错误
"clean": "rm -rf lib !(*.config|*.support).js"
Syntax error: "(" unexpected
【问题讨论】:
-
您是否尝试使用正则表达式模式调用 unix 命令
rm?这真的有效吗? -
请注意,您尝试运行的命令可能是特定于 shell 的(bash、zsh、ksh 等),因此您可能需要考虑使用
rimraf模块 -
我在不使用否定时可以正常工作。我可以指定要删除的特定文件和文件夹,但是当我尝试执行除配置文件之外的所有 root js 时,我遇到了问题。
-
@smac89 我在使用
rimraf时遇到了同样的问题,所以我切换回rm -
@smac89 - Ranges 例如
[a-z],在某些 glob 实现中受支持。 OP 中的第一个示例实际上对我有用,既可以通过 CLi 直接运行,也可以通过 npm 脚本运行。但是,OP 的第二个示例中的 extended glob 模式直接通过 CLI 工作(shopt -s extglob即 extglob 设置为 on)但通过 npm 脚本失败。我认为您建议rimraf是对的,因为它具有可移植性/跨平台优势。根据我的回答,在 npm 脚本中使用带有 extended glob 模式的rimraf确实需要包含在\"...\"中。
标签: javascript npm npm-scripts