emc*_*den 8 javascript node.js gruntjs
我有一个grunt文件,我用来构建我的Web应用程序.
这咕噜文件使用几个咕噜的contrib插件,像clean,copy,compass,cssmin,等来正确地构建Web应用程序.
这个grunt文件也应该处理生成CSS和复制文件以创建主题CSS文件.目前,我加入的目标,以我的clean,copy和compass(等)为每个主题的任务.
这在grunt文件中变得笨拙,并且在添加新主题时会使其变得困难且容易出错.
为了方便起见,我真的想创建自己定制的"主题" 咕噜,将在内部使用的其他任务咕噜的contrib任务(clean,copy,compass等)来执行所有必要的任务指定的主题.
对于一个主题(主要是它的源文件夹)只有少量配置数据,我将有足够的信息来调用其他任务(因为主题源和目标文件是非常常规驱动的).
我似乎找不到从我的自定义任务中调用任务的方法,我可以在其中以编程方式指定所有配置选项,文件等.
有谁知道我怎么能这样做?
谢谢,艾德
我似乎找不到从我的自定义任务中调用任务的方法,我可以在其中以编程方式指定所有配置选项,文件等.
我不认为您可以使用特定配置运行grunt多任务,因为从任务配置中指定的目标读取多任务配置.
因此,一种方法是在运行之前修改任务配置.
这是一个非常基本的例子:
grunt.registerMultiTask('theme', function() {
var themeName = this.options().name;
grunt.config.set('yourOtherTask.dist.options.name', themeName);
grunt.task.run('yourOtherTask');
});
Run Code Online (Sandbox Code Playgroud)
就这么简单:
concat: {
web: {
src: ['web/**/*.js'],
dest: 'dist/main.js'
}
},
uglify: {
server: {
src: '<%= concat.web.dest %>',
dest: '<%= concat.web.dest %>.min.js'
}
},
Run Code Online (Sandbox Code Playgroud)
grunt.initConfig({
clean: {/!* clean task configuration *!/},
copy: {/!* copy task configuration *!/},
compass: {/!* compass task configuration *!/},
cssmin: {/!* cssmin task configuration *!/}
});
grunt.registerTask('theme', function () {
var tasks = [
'clean',
'copy',
'compass',
'cssmin'
];
tasks.forEach(function (task) {
grunt.task.run(task);
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5573 次 |
| 最近记录: |