可以在 grunt.file.read 中使用 globbing 模式吗?
Can a globbing pattern be used in grunt.file.read?
我有以下文件夹结构:
Project
-build
-gruntfiles
--includes
---bar2.js
---bar3.js
--gruntfile.js
-folder1
--prefs.js
--team
---file1.jsx
-folder2
--prefs.js
--team
---file2.jsx
-folder3
--prefs.js
--team
---file3.jsx
然后我 运行 一个 grunt-replace 任务遍历所有文件夹并用 3 个不同文件的内容替换 3 个不同的模式:
replace: {
dist1: {
options: {
patterns: [
{
match: 'foo1',
replacement: '<%= grunt.file.read("../**/prefs.js") %>'
},
{
match: 'foo2',
replacement: '<%= grunt.file.read("includes/bar2.js") %>'
},
{
match: 'foo3',
replacement: '<%= grunt.file.read("includes/bar3.js") %>'
}
]
},
files: [
{
expand: true,
flatten: true,
src: ['../**/team/*.jsx'],
dest: '../build/team/'
}
]
}
Grunt 读取 includes 文件夹中的文件没问题。
我的问题是,对于第一个替换模式,我需要读取每个文件夹的相对 prefs.js
。
我已经尝试 grunt.file.expand
returns 整个 prefs.js
文件路径列表,我只需要一种为当前文件夹选择正确路径的方法。
我设法通过使用配置变量和 grunt-replace
替换选项的函数来实现我想要的。
count: 0,
replace: {
dist1: {
options: {
patterns: [
{
match: 'foo1',
replacement: function(){
var count = grunt.config.get("count");
var paths = grunt.file.expand('../**/prefs.js');
var current_path = paths[count];
var content = grunt.file.read(current_path);
count++;
grunt.config.set("count", count);
return content;
}
},
{
match: 'foo2',
replacement: '<%= grunt.file.read("includes/bar2.js") %>'
},
{
match: 'foo3',
replacement: '<%= grunt.file.read("includes/bar3.js") %>'
}
]
},
files: [
{
expand: true,
flatten: true,
src: ['../**/team/*.jsx'],
dest: '../build/team/'
}
]
}
在替换函数中,我现在使用 grunt.file.expand
调出目录路径数组,然后使用计数配置变量来选择正确的路径。
随着每次迭代为下一条路径做好准备,计数会增加。
我有以下文件夹结构:
Project
-build
-gruntfiles
--includes
---bar2.js
---bar3.js
--gruntfile.js
-folder1
--prefs.js
--team
---file1.jsx
-folder2
--prefs.js
--team
---file2.jsx
-folder3
--prefs.js
--team
---file3.jsx
然后我 运行 一个 grunt-replace 任务遍历所有文件夹并用 3 个不同文件的内容替换 3 个不同的模式:
replace: {
dist1: {
options: {
patterns: [
{
match: 'foo1',
replacement: '<%= grunt.file.read("../**/prefs.js") %>'
},
{
match: 'foo2',
replacement: '<%= grunt.file.read("includes/bar2.js") %>'
},
{
match: 'foo3',
replacement: '<%= grunt.file.read("includes/bar3.js") %>'
}
]
},
files: [
{
expand: true,
flatten: true,
src: ['../**/team/*.jsx'],
dest: '../build/team/'
}
]
}
Grunt 读取 includes 文件夹中的文件没问题。
我的问题是,对于第一个替换模式,我需要读取每个文件夹的相对 prefs.js
。
我已经尝试 grunt.file.expand
returns 整个 prefs.js
文件路径列表,我只需要一种为当前文件夹选择正确路径的方法。
我设法通过使用配置变量和 grunt-replace
替换选项的函数来实现我想要的。
count: 0,
replace: {
dist1: {
options: {
patterns: [
{
match: 'foo1',
replacement: function(){
var count = grunt.config.get("count");
var paths = grunt.file.expand('../**/prefs.js');
var current_path = paths[count];
var content = grunt.file.read(current_path);
count++;
grunt.config.set("count", count);
return content;
}
},
{
match: 'foo2',
replacement: '<%= grunt.file.read("includes/bar2.js") %>'
},
{
match: 'foo3',
replacement: '<%= grunt.file.read("includes/bar3.js") %>'
}
]
},
files: [
{
expand: true,
flatten: true,
src: ['../**/team/*.jsx'],
dest: '../build/team/'
}
]
}
在替换函数中,我现在使用 grunt.file.expand
调出目录路径数组,然后使用计数配置变量来选择正确的路径。
随着每次迭代为下一条路径做好准备,计数会增加。