我必须在这里找到一些非常简单的东西。我正在尝试编写一个处理文件的函数任务。 Grunt API文档提到您可以[动态构建文件对象],但由于某种原因,我无法使其工作。我的Gruntfile.js文件的简化版本如下所示:
module.exports = function(grunt) {
grunt.initConfig({
proj: {
build: {
files: [{
expand: true,
cwd: 'src',
src: ['**/*.js'],
dest: 'dist'
}]
}
}
});
grunt.registerTask('proj', function(){
var files = grunt.config('proj.build.files');
console.log(files);
});
};
我希望日志显示从src目录到dist目录的文件映射列表。实际记录的是配置中的对象proj.build.files,如下所示:
Running "proj:build" task
[ { expand: true, cwd: 'src', src: [ '**/*.js' ], dest: 'dist' } ]
Done, without errors.
API文档仅根据其他任务讨论此类配置。我试着查看uglify任务,看看如何检索文件映射,但我无法弄明白。
答案 0 :(得分:1)
以下是我发现为Grunt任务动态构建文件集的解决方法:
uglify: {
app: {
files: [{
src: '{<%= _prefixSrc(pkg.target, pkg.resources.js) %>}', // Note the brackets!
dest: '<%= pkg.target %>min/<%= pkg.name %>.min.js'
}]
}
},
_prefixSrc: function(prefix, files) {
return files.map(function(file){
return prefix + file;
});
},
另请参阅GitHub上的此问题/功能请求,如果您觉得有用,请随时对其进行评论:https://github.com/gruntjs/grunt/issues/1307
答案 1 :(得分:0)
您可以使用重命名功能来更改文件名,如下所示是文件对象...
build: {
files: [{
expand: true,
cwd: 'src',
src: ['**/*.js'],
dest: 'dist',
rename: function(dest, src) {
/*
rename logic
you will have access to src and dest name and can return desirect name from this function.
*/
return src+123;
}
}]
}