2017-01-16 67 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