我有一个包含几个子文件夹的项目,其中包含我要连接的JavaScript文件.什么是正确的配置方式?
例如.
来源:/modules/$modulename/js/*.js(几个文件)dest:/modules/$modulename/js/compiled.js
所以我想要做的是将每个子文件夹的未知/未配置的子文件夹($ modulename)的js文件编译成一个文件.
这可能吗?
以下函数(在hereandnow78的指令之后构建)完成了这项工作:
grunt.registerTask('preparemodulejs', 'iterates over all module directories and compiles modules js files', function() {
// read all subdirectories from your modules folder
grunt.file.expand('./modules/*').forEach(function(dir){
// get the current concat config
var concat = grunt.config.get('concat') || {};
// set the config for this modulename-directory
concat[dir] = {
src: [dir + '/js/*.js', '!' + dir + '/js/compiled.js'],
dest: dir + '/js/compiled.js'
};
// save the new concat config
grunt.config.set('concat', concat);
});
});
Run Code Online (Sandbox Code Playgroud)
之后我将preparemodulejs放在我的默认配置中的concat作业之前.
her*_*w78 32
您可能需要编写自己的任务代码,迭代子文件夹,并动态附加到concat配置.
grunt.registerTask("your-task-name", "your description", function() {
// read all subdirectories from your modules folder
grunt.file.expand("./modules/*").forEach(function (dir) {
// get the current concat config
var concat = grunt.config.get('concat') || {};
// set the config for this modulename-directory
concat[dir] = {
src: ['/modules/' + dir + '/js/*.js', '!/modules/' + dir + '/js/compiled.js'],
dest: '/modules/' + dir + '/js/compiled.js'
};
// save the new concat configuration
grunt.config.set('concat', concat);
});
// when finished run the concatinations
grunt.task.run('concat');
});
Run Code Online (Sandbox Code Playgroud)
运行这个:
$ grunt your-task-name
Run Code Online (Sandbox Code Playgroud)
这段代码未经测试,但我认为它应该可以完成你的工作.
提示:如果要保持gruntfile较小,可以将此代码放入外部文件并包含在gruntfile中,例如将其放入tasks-directory中的文件中:
module.exports = function(grunt) {
grunt.registerTask("your-task-name", "your description", function() {
...
});
};
Run Code Online (Sandbox Code Playgroud)
并在你的gruntfile中加载:
grunt.loadTasks("./tasks");
Run Code Online (Sandbox Code Playgroud)