node.js - Node glob 模式包括除某些文件夹之外的所有 js

标签 node.js node-glob

我有一个看起来像这样的项目

ls foo/
- file0.js
- a/file1.js
- b/file2.js
- c/file3.js
- d/file4.js

如何写glob pattern 排除 c & d 文件夹但获取所有其他 javascript 文件?我看过here举个例子,但无法让任何东西发挥作用。

我想解决方案看起来与此类似:

glob('+(**/*.js|!(c|d))', function(err, file) {
  return console.log(f);
});

我想回来

- file0.js
- a/file1.js
- b/file2.js

最佳答案

对于没有第二个参数来设置排除的环境,我们可以使用下面示例中演示的模式来实现这样的异常:

模式

/src/**/!(els)/*.scss

结构

/src/style/kit.scss
/src/style/els/some.scss
/src/style/els/two.scss

结果

它只会选择/src/style/kit.scss

我们可以使用http://www.globtester.comhttps://www.digitalocean.com/community/tools/glob在线快速测试。

enter image description here

更新

如果我们正在使用Gulp 任务运行程序。或者一些其他工具或类提供第二个或多个排除参数。或者只是多个也支持排除的全局选择器。然后我们可以像下面的 gulp show 示例一样:

吞咽

我们传递一个数组而不仅仅是一个字符串(多个全局选择器,一个接一个地应用以添加更多文件或排除)

src(['src/style/**/*.{scss,sass}', '!(src/style/els/**)'])

我们可以有多个排除

watch(['src/style/**/*.{scss,sass}', '!(src/style/els/**)', '!(src/style/_somefileToExclude.scss)'])

在 gulp 中,您可以将其与任何支持数组作为全局选择器的方法一起使用。 srcwatch 是我使用它的用途。

注意:如果您想排除某个文件夹及其所有子文件夹,我们将使用上面的 ** 而不是 **/*这是行不通的。如果您需要一些特定的文件类型(扩展名),那么您可以使用 **/*.scss 例如。

关于node.js - Node glob 模式包括除某些文件夹之外的所有 js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29020237/

相关文章:

node.js - 如何使用 everyauth 和 nodejs 保存用户 ID 信息

node.js - 无法上传文件express(NodeJS)

node.js - 如何停止 AngularJS 教程 Web 服务器

javascript - 在 NestJS 中将 Swagger 文档生成为 JSON/YAML

node.js - 双扩展名文件的通配

javascript - globbing - 匹配某些文件扩展名但不匹配其他文件扩展名的正确方法

Gulp:如何查看 glob 的文件名

node.js - mongoose.connect 在开 Jest 测试后留下打开的句柄