在Gruntfile.js
中,我有:
watch: {
styles: {
files: [
'<%= yeoman.app %>/styles/{,*/}*.less'
],
tasks: ['copy:styles', 'autoprefixer']
}
}
对于路径,究竟{,*/}
意味着什么?使用双星号有什么不同**/
?
在Gruntfile.js
中,我有:
watch: {
styles: {
files: [
'<%= yeoman.app %>/styles/{,*/}*.less'
],
tasks: ['copy:styles', 'autoprefixer']
}
}
对于路径,究竟{,*/}
意味着什么?使用双星号有什么不同**/
?
这些是Grunt 的globbing 模式,由node-glob和minimatch库支持。
基本上:
*
匹配任意数量的字符,但不匹配 /
**
匹配任意数量的字符,包括 /
, 只要它是路径部分中的唯一内容{}
允许逗号分隔的“或”表达式列表因此,styles/{,*/}*.less
匹配以下文件:
styles
目录中的 LESS 文件styles
(但没有更深)这种模式在 yeoman 模板中被广泛使用:它意味着在文件夹层次结构中只查看一层。它主要用于性能原因,因为同时观看太多文件可能会很慢(甚至不可能)。
我相信您在那里使用的是minimatch 模式。
双星号是一个导致递归到子目录的全局变量。
单个星号仅匹配当前目录中的 0 个或多个字符(它匹配除斜杠字符之外的每个字符)。
例如,a/**/d 将匹配 a/b/c/d。
其他答案已经回答了是什么{,*/}*
意思。
**/
但和之间的不同{,*/}*
是文件夹深度。
/styles/{,*/}*.less
分为两种情况
/styles/*.less
/styles/*/*.less
例如
/styles/{,*/}*.less
将匹配/styles/x.less
(情况 1)
/styles/{,*/}*.less
也将匹配/styles/test/x.less
(情况 2)
但/styles/{,*/}*.less
无法匹配/styles/test/test1/x.less
但是/styles/**/*.less
能做到