我正在尝试学习如何将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
答案 0 :(得分:6)
对模式匹配和gulp用于解决这些全局匹配的模块有基本的了解是有帮助的,即https://github.com/isaacs/minimatch
您要问的**
符号称为“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)
*
几乎普遍是一个通配符 - 它可以匹配那个地方的任何东西。
示例:强>
因此,如果您想要定位libs
和css
目录中的js
个目录,可以编写/*/libs/
答案 3 :(得分:0)
首先...... ../
是“上一个父目录”的命令。所以,如果它是../../
- 它会上升2个目录。
因此../*
用同样的方式说,'任何一个父目录的文件'。所以,有了你的问题,**/*.js
- 这就是说'从任何一个级别以上的父目录中获取任何.js文件'。
使用通配符*
时 - 它是递归命令。