当有人试图在我的js目录中获取src文件时,有人可以解释这意味着** / * .js吗?

时间:2014-02-17 16:58:14

标签: javascript jquery gulp

我正在尝试学习如何将GulpJS文件放在一起并在某些地方看到以下源引用* / .js但不确定它究竟意味着什么。有人可以解释这是什么吗?

如果我的文件结构如下所示,我将如何访问 *每个js libs中的每个js文件和js src中的每个js文件? *我如何访问每张图片?

css/
    libs/
        lib1.scss
        lib2.scss
    src/
        partials/
            partial1.scss
            partial2.scss
            partial3.scss
js/
    libs/
        lib1/
            lib11.js
        lib2/
            lib21.js
        lib3/
            lib31.js
    src/
        src1.js
        src2.js
        src3.js

img/
    imgs1/
        img11.jpg
        img12.jpg
        img13.png
    imgs2/
        img21.gif
        img22.png
        img23.jpg

4 个答案:

答案 0 :(得分:6)

对模式匹配和gulp用于解决这些全局匹配的模块有基本的了解是有帮助的,即https://github.com/isaacs/minimatch

Globstar **

您要问的**符号称为“globstar”。在大多数unix模式匹配中,*只能表示一个目录级别:

"a/*/*.js"

a/b/app.js => MATCH
a/b/c/app.js => NO MATCH
a/app.js => NO MATCH

globstar允许您指定未知数量的中间目录,如下所示:

"a/**/*.js"

a/b/app.js => MATCH
a/b/c/app.js => MATCH
a/app.js => MATCH
a/b/c/d/e/f/g/h/i/j/app.js => MATCH
other/app.js => NO MATCH

否定

您可以使用前置!

来否定它们
["a/**/*.js", "!a/vendor/**/*.js"]

a/b/c/app.js => MATCH
a/vendor/b/backbone.js => NO MATCH

用于从linting等中排除供应商文件。

多个球组合

您还可以在一个阵列中组合多个球体,以将多个模式作为一个搜索包含在内。

["js/**/*.js", "img/**/*.png"]

js/a/b/app.js => MATCH
img/cat.png => MATCH

你要求的glob将是这样的:

["js/**/*.js", "img/**/*"]

答案 1 :(得分:5)

“** / * .js”表示“当前所有目录下的所有.js文件,递归”。

繁体“* / * .js”表示“当前所有目录下的所有.js文件”。

答案 2 :(得分:0)

*几乎普遍是一个通配符 - 它可以匹配那个地方的任何东西。

示例:

因此,如果您想要定位libscss目录中的js个目录,可以编写/*/libs/

答案 3 :(得分:0)

首先...... ../是“上一个父目录”的命令。所以,如果它是../../ - 它会上升2个目录。

因此../*用同样的方式说,'任何一个父目录的文件'。所以,有了你的问题,**/*.js - 这就是说'从任何一个级别以上的父目录中获取任何.js文件'。

使用通配符*时 - 它是递归命令。