2017-01-16 68 views
0

我想要使用下面的grunt插件来使我包含链接到我的生产版本的压缩文件,并为我的开发版本解压缩。命令行变量不被dev_prod_switch拾取

https://www.npmjs.com/package/grunt-dev-prod-switch

下面是我的Gruntfile的一个非常简化版本: ... grunt.loadNpmTasks( '咕噜-DEV-PROD-开关');

// 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', 

我编译之前,将文件处理正确使用prod条件注释我已经在我的html/js文件中设置了。

完美世界是简单地运行:

grunt dev 

,看到正在处理的输出文件的预期,但加环境变量到底是不是,如果它有问题无法避免。

grunt prod --env=prod 

grunt dev --env=dev 

任何帮助表示赞赏,并高兴,如果需要添加更多的细节 - 我有点节点/咕噜小白我害怕。谢谢。

+1

您是否尝试在'dev_prod_switch'中设置'environment'选项为:'environment:grunt.option('env')|| 'dev','通过CLI接受'grunt prod --env = prod'或'grunt dev --env = dev'。 – RobC

+0

嗨RobC感谢您的提供,但我不确定我完全理解您的建议。我现在可以切换dev_prod_switch的唯一方法是通过手动修改 dev_prod_switch:{ 选项:{ 环境:“开发”, 如果我把它忽略了CLI,例如选项: 咕噜PROD - env = prod 或者我在你的评论中遗漏了一些东西? 谢谢。 – user2115620

+0

尝试用'environment:grunt.option('env')||替换当前读取'environment:'dev','在Gruntfile.js中的代码行。 'dev','然后在CLI中使用'grunt prod --env = prod'或'grunt dev --env = dev'运行命令 – RobC

回答

1

按照在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将使用默认值时提供没有选项标志。更多信息请参见grunt.options

+0

感谢RobC,再次感谢。 – user2115620