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

sty*_*ler 2 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
Run Code Online (Sandbox Code Playgroud)

rho*_*son 6

了解模式匹配和gulp用于解决这些glob匹配的模块是有帮助的,即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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

否定

你可以用一个前缀来否定它们!:

["a/**/*.js", "!a/vendor/**/*.js"]

a/b/c/app.js => MATCH
a/vendor/b/backbone.js => NO MATCH
Run Code Online (Sandbox Code Playgroud)

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

多个球组合在一起

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

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

js/a/b/app.js => MATCH
img/cat.png => MATCH
Run Code Online (Sandbox Code Playgroud)

你请求的glob将是这样的:

["js/**/*.js", "img/**/*"]
Run Code Online (Sandbox Code Playgroud)


Mar*_*coS 5

"**/*.js"表示"当前一个目录下的所有目录中的所有.js文件,递归地".

传统的"*/*.js"表示"当前所有目录下的所有.js文件".