如何在npm脚本全局模式中使用否定?

时间:2019-01-27 06:14:20

标签: javascript npm npm-scripts

我试图创建一个clean npm脚本,但是我继续在控制台中出现错误,或者没有达到预期的效果。我正在尝试删除除某些配置文件以外的所有根JavaScript文件。

以下内容将忽略否定语法删除所有文件

"clean": "rm -rf lib [a-z].js !*.config.js !*.support.js"

以下内容在控制台中引发错误

"clean": "rm -rf lib !(*.config|*.support).js"
Syntax error: "(" unexpected

1 个答案:

答案 0 :(得分:2)

使用rimraf并将复杂的glob模式包装在JSON转义的双引号中,即\"...\"

例如:

"clean": "rimraf lib \"!(*.config|*.support).js\""

此示例(上)

  1. 从项目目录的根目录中删除lib目录。
  2. 从项目目录的根目录中删除所有.js个文件。但是,以.config.js.support.js结尾的文件(例如foobar.config.jsquux.support.js)将被取反。

编辑:通过npm脚本使用以下bash find命令也可以达到预期效果:

"clean": "find . \\( -name '*.js' -o -name 'lib' \\) -not \\( -name '*.config.js' -o -name '*.support.js' \\) -maxdepth 1 -exec rm -rf {} \\;"

但是,我会选择上述rimraf方法来实现跨平台(包括Windows cmd.exe)的更大可移植性