Grunt -运行任务前动态设置配置
Grunt - Dynamically Set Config Before Running a Task
所以这是我假设的配置对象为一个假设的fooTask做一些事情(不相关的问题)到一堆JS文件
grunt.initConfig({
fooTask: {
app1: 'app1/*.js',
app2: 'app2/*.js',
app3: 'app3/*.js'
}
});
正如你所看到的,使用这种方法,我必须运行fooTask 3次,每个应用程序指定为目标:
grunt fooTask:app1
grunt fooTask:app2
grunt fooTask:app3
不用说,随着应用程序数量的增加或此类任务数量的增加,这不会扩展,因为必须为每个应用程序反复编写相同的代码。
所以理想情况下,我想要定义的只是一个目标,应用程序的名称作为配置变量传入
grunt.initConfig({
fooTask: {
dist: '<%=appName%>/*.js'
}
});
然后我想调用fooTask 3次,每个应用程序一次,正确的应用程序设置为appName
var apps = ['app1', 'app2', 'app3'];
apps.forEach(function(app) {
var currAppName = app;
// Run fooTask but how do I specify the new currAppName config?
grunt.task.run('fooTask');
});
从上面的代码中,我知道我可以使用grunt.task.run
运行我的fooTask,但是我如何为我的任务设置appName配置?
请注意,这个问题与另一个问题类似,也没有正确的答案-从task.run中通过Grunt配置选项
EDIT 2:
所以不要介意第一次编辑下面的垃圾,留下什么不起作用的例子。在我的例子中,能够在运行时设置任务中的值非常重要,所以我决定使用文件系统。也许它适合你的需要。
grunt.initConfig({
someTask: {
someKey: fs.readFileSync('file.txt', { encoding: 'utf8' })
}
});
当然,如果你需要一堆不同的应用程序名称,你可以在任务外执行readFile。
编辑:
嗯。我发誓我写这篇文章的时候它还在工作……但现在并非如此。Grunt只把额外的参数视为额外的未找到的任务。
我试图弄清楚这个自己,最后一个"duh"刚刚发生的时刻-为什么不在grunt.initConfig
之前解析process.argv
?
module.exports = function(grunt) {
var sourcefile = process.argv[2] || 'default.js'; // <- this
grunt.initConfig({
uglify: {
main: {
src: sourcefile, // <- voila :)
dest: sourcefile.substring(0, sourcefile.length-3) + '.min.js'
}
}
});
grunt.loadNpmTasks('uglify');
grunt.registerTask('default', ['uglify']);
};
和从命令行使用:
grunt mykillerscript.js
我甚至没有尝试使用grunt。选项的原因与所有示例只显示指示运行哪个任务的原因相同,但是如果有更"grunt"的方法来执行此操作,我不会感到惊讶。
相关文章:
- HTML范围:动态设置值属性
- 无法使用PHP动态设置下拉列表中的值
- 如何在AngularJS应用程序的主体上动态设置溢出
- 是否可以在调用时动态设置Jquery Accordion的活动面板
- 动态设置谷歌地图缩放
- 动态设置动态创建的元素的宽度
- 如何根据两个不同的输入动态设置链接的路径
- 在使用 Django 静态文件时动态设置映像时,只有绝对路径才能与 jquery 一起使用
- 动态设置页面的背景图像
- 进度条.js动态设置文本
- jQuery timepicker:如何动态设置输入字段的minTime
- 使用Javascript动态设置onKeyUp属性
- 如何保存从单击this.nameClass动态设置的本地存储
- 使用vue.js动态设置v-for
- 如何动态设置填充并在不刷新的情况下显示它
- 在剑道网格中,我可以用一个函数动态设置列属性吗
- Symfony sfValidators:动态设置是否需要值
- 根据移动设备屏幕大小动态设置HighCharts marginTop
- HTML图像布局使用PHP变量,该变量是用JavaScript动态设置的〔o r…〕
- jqgrid在条件下动态设置单元格可编辑false