如何在 npm 脚本 glob 模式中使用否定?
How to use negation in npm script glob pattern?
我正在尝试创建一个 clean
npm 脚本,但我继续在控制台中收到错误消息,或者没有达到预期的效果。我正在尝试删除除某些配置文件之外的所有根 JavaScript 文件。
以下删除所有忽略否定语法的文件
"clean": "rm -rf lib [a-z].js !*.config.js !*.support.js"
以下在控制台中抛出错误
"clean": "rm -rf lib !(*.config|*.support).js"
Syntax error: "(" unexpected
利用 rimraf 并将复杂的 glob 模式包装在 JSON 转义双引号中,即 \"...\"
例如:
"clean": "rimraf lib \"!(*.config|*.support).js\""
这个例子(上)
- 从项目目录的根目录中删除
lib
目录。
- 从项目目录的根目录中删除所有
.js
文件。但是,以 .config.js
或 .support.js
结尾的文件(例如 foobar.config.js
和 quux.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
我正在尝试创建一个 clean
npm 脚本,但我继续在控制台中收到错误消息,或者没有达到预期的效果。我正在尝试删除除某些配置文件之外的所有根 JavaScript 文件。
以下删除所有忽略否定语法的文件
"clean": "rm -rf lib [a-z].js !*.config.js !*.support.js"
以下在控制台中抛出错误
"clean": "rm -rf lib !(*.config|*.support).js"
Syntax error: "(" unexpected
利用 rimraf 并将复杂的 glob 模式包装在 JSON 转义双引号中,即 \"...\"
例如:
"clean": "rimraf lib \"!(*.config|*.support).js\""
这个例子(上)
- 从项目目录的根目录中删除
lib
目录。 - 从项目目录的根目录中删除所有
.js
文件。但是,以.config.js
或.support.js
结尾的文件(例如foobar.config.js
和quux.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