简单地说一下这个问题,我正在寻找一种方法来传递命令行参数,类似于以下内容,可以在我的任务配置文件中使用。
$ grunt mytask --site=abcd
要详细说明我的设置,我使用的是load-grunt-config,因此我的 /Gruntfile.js 文件只包含以下内容......
module.exports = function (grunt) {
"use strict";
require("load-grunt-config")(grunt);
};
然后我有一个 / grunt 文件夹,其中包含 /grunt/compass.js , /grunt/aliases.js 等文件, /grunt/watch.js 等,其中每个文件都是该任务的配置。以下是我的 /grunt/watch.js 文件的示例:
module.exports = {
compass: {
files: ['ui/scss/**/*.scss'],
tasks: ['compass:local']
}
};
现在,我想做的是以下内容。我想使用grunt.template类型格式来输入从命令行传入的值。它不必是grunt.option格式,因为我可以读取其他地方的值并将其分配给变量/ config / etc,但我无法找出任何方法来获取该命令行选项进入我的配置设置。
module.exports = {
compass: {
files: ['ui/scss/*<%= grunt.option("site") %>*.scss'],
tasks: ['compass:local']
}
};
我的基本问题是我无法弄清楚如何使上面的&lt;%= grunt.option(&#34; site&#34;)%&gt; 代码生效。 (或类似的东西,可能&lt;%= grunt.config.site%&gt; )
在 /Gruntfile.js 中,我可以通过以下内容阅读该选项...
module.exports = function (grunt) {
"use strict";
grunt.log.writeln(grunt.option("site"));
require("load-grunt-config")(grunt);
};
...但是从那里开始,我无法弄清楚如何将该值放在任务配置可以读取的位置。 有任何想法吗?任何帮助将非常感激!谢谢。
答案 0 :(得分:0)
这可能是一种更优雅的方式,可能是v.1.0.0
中的某些内容,但我目前使用的是上一个稳定版v.0.4.5
。
如果您想访问lodash模板grunt.option("whatever")
中的<%= %>
,则需要将其设置为grunt.initConfig({})
中的媒体资源。
假设您在运行--prod
时确定是否有grunt build
标记,以确定它是否是产品。
您可以设置:
grunt.initConfig({
...
production: grunt.option('prod'),
...
然后您可以在模板中使用它:
templates: {
...
dest: '<%= production ? paths.dist : paths.dev %>/'
}
因此,当您运行grunt build --prod
时,目标文件夹会转到正确的位置。