dev_prod_switch 未选取命令行变量
command line variable not picked up by dev_prod_switch
我正在尝试使用以下 g运行t 插件来使我能够使用包括链接到我的生产构建的压缩文件,并为我的开发构建使用未压缩的文件。
https://www.npmjs.com/package/grunt-dev-prod-switch
下面是我的 G运行t 文件的一个非常精简的版本:
...
grunt.loadNpmTasks('grunt-dev-prod-switch');
// Project configuration.
grunt.initConfig({
...
dev_prod_switch: {
options: {
environment: 'dev',
env_char: '#',
env_block_dev: 'env:dev',
env_block_prod: 'env:prod'
},
dynamic_mappings: {
files: [{
expand: true,
cwd: 'dist',
src: ['*.html', 'js/includes.js', 'js/includes.min.js'],
dest: 'dist'
}]
}
},
....
// Full distribution task.
grunt.registerTask('dev', ['...', '...', 'dev_prod_switch']);
grunt.registerTask('prod', ['...', '...', '...', 'dev_prod_switch']);
});
在我的 HTML 文件中,我正在使用:
在我的 includes.js 文件中:
var path;
/* env:dev */
path = "js/pageScripts/dashboard.js";
/* env:dev:end */
/* env:prod */
path = "js/pageScripts/dashboard.min.js"
/* env:prod:end */
plenty_admin.REST.loadScript(path, function(){
....
});
我使用以下命令在命令行上触发我的构建:
grunt prod --env=prod
或
grunt dev --env=dev
这对 "dynamic_mappings" 中定义的文件的处理方式没有影响,但如果我设置:
environment: 'prod',
在我编译之前,使用我在 html/js 文件中设置的 prod 条件注释正确处理文件。
完美世界就是运行:
grunt dev
或
grunt prod
并看到输出文件按预期处理,但如果无法避免,将环境变量添加到末尾也不是问题。
grunt prod --env=prod
或
grunt dev --env=dev
感谢任何帮助,如有必要,很乐意添加更多详细信息 - 恐怕我是一个节点/g运行t 菜鸟。谢谢。
根据 docs...
中的示例
按如下方式更改 options
对象:
options: {
environment: grunt.option('env') || 'dev', // <-- Change value to this !
env_char: '#',
env_block_dev: 'env:dev',
env_block_prod: 'env:prod'
}
注意: 这将根据通过 CLI 提供的标志设置选项。当值设置为'dev'
时(如上面的代码所示)这意味着dev
将是时使用的默认值no 提供选项标志。可以在 grunt.options.
中找到更多信息
我正在尝试使用以下 g运行t 插件来使我能够使用包括链接到我的生产构建的压缩文件,并为我的开发构建使用未压缩的文件。
https://www.npmjs.com/package/grunt-dev-prod-switch
下面是我的 G运行t 文件的一个非常精简的版本: ... grunt.loadNpmTasks('grunt-dev-prod-switch');
// Project configuration.
grunt.initConfig({
...
dev_prod_switch: {
options: {
environment: 'dev',
env_char: '#',
env_block_dev: 'env:dev',
env_block_prod: 'env:prod'
},
dynamic_mappings: {
files: [{
expand: true,
cwd: 'dist',
src: ['*.html', 'js/includes.js', 'js/includes.min.js'],
dest: 'dist'
}]
}
},
....
// Full distribution task.
grunt.registerTask('dev', ['...', '...', 'dev_prod_switch']);
grunt.registerTask('prod', ['...', '...', '...', 'dev_prod_switch']);
});
在我的 HTML 文件中,我正在使用:
在我的 includes.js 文件中:
var path;
/* env:dev */
path = "js/pageScripts/dashboard.js";
/* env:dev:end */
/* env:prod */
path = "js/pageScripts/dashboard.min.js"
/* env:prod:end */
plenty_admin.REST.loadScript(path, function(){
....
});
我使用以下命令在命令行上触发我的构建:
grunt prod --env=prod
或
grunt dev --env=dev
这对 "dynamic_mappings" 中定义的文件的处理方式没有影响,但如果我设置:
environment: 'prod',
在我编译之前,使用我在 html/js 文件中设置的 prod 条件注释正确处理文件。
完美世界就是运行:
grunt dev
或
grunt prod
并看到输出文件按预期处理,但如果无法避免,将环境变量添加到末尾也不是问题。
grunt prod --env=prod
或
grunt dev --env=dev
感谢任何帮助,如有必要,很乐意添加更多详细信息 - 恐怕我是一个节点/g运行t 菜鸟。谢谢。
根据 docs...
中的示例按如下方式更改 options
对象:
options: {
environment: grunt.option('env') || 'dev', // <-- Change value to this !
env_char: '#',
env_block_dev: 'env:dev',
env_block_prod: 'env:prod'
}
注意: 这将根据通过 CLI 提供的标志设置选项。当值设置为'dev'
时(如上面的代码所示)这意味着dev
将是时使用的默认值no 提供选项标志。可以在 grunt.options.