【问题标题】:node glob pattern include all js except in certain folders节点 glob 模式包括除某些文件夹之外的所有 js
【发布时间】:2015-03-12 21:09:36
【问题描述】:

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

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

【问题讨论】:

    标签: node.js node-glob


    【解决方案1】:

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

    模式

    /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在线快速测试。

    更新

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

    Gulp

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

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

    我们可以有多个排除项

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

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

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

    【讨论】:

      【解决方案2】:

      我在自述文件中有一个忽略选项:

      glob('**/*.js', { ignore: '{c,d}/**' }, cb)
      

      这将从匹配中排除两个 c + d 文件夹。更多here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-13
        • 1970-01-01
        • 2013-05-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-14
        • 2019-08-15
        相关资源
        最近更新 更多