2013-09-28 39 views
0

我有一個Grunt文件(Gruntfile.js)來構建一個angularjs組件。我使用外部JavaScript文件(build.config.js)來定義所需的文件和輸出目錄。具有「require」功能並傳遞參數的Gruntfile.js

module.exports = { 
    build_dir: 'build', 
    app_files: { 
     src: ['src/**/*.js','!src/**/*.spec.js'], 
     //... 
    }, 
    vendor_files: { 
     js: [ /* vendor files like jquery, bootstrap, etc... */ ] 
    } 
} 

而且我Gruntfile.js調用它像這樣

module.exports = function(grunt) { 
    /* some code */ 
    var userConfig = require('./build.config.js'); 
    var taskConfig = { 
     pkg: grunt.file.readJSON("package.json"), 
     /* more code */ 
    }, 
    /* yet more code */ 
} 

在我的package.json,我指定的i18n目的locale變量,我可以把它像'<%= pkg.locale %>'taskConfig部分內部使用。現在有一些JavaScript文件在build.config.js中指定,我需要根據指定的區域設置加載,但我不知道如何獲取此變量,因爲在build.config.js中沒有grunt對象來讀取package.json文件。因此,我不能做這樣的事情在build.config.js

vendor_files: { 
    js: [ 'vendor/foo/bar.<%= pkg.locale %>.js' ] 

有什麼辦法,我可以做到這一點沒有把一切從build.config.jsGruntfile.js

回答

0

是的。 Grunt模板只是指向Grunt配置本身。

所以對於配置:

grunt.initConfig({ 
    pkg: { 
    locale: 'en' 
    } 
}); 

模板<%= pkg.locale %>將等於字符串'en'

pkg: grunt.file.readJSON("package.json")只是將您的package.json文件讀取爲javascript對象,並將其指定給配置中的pkg屬性。

無論您是希望聲明,讀取/解析JSON文件,還是輸出javascript對象的其他腳本(./build.config.js似乎都是這樣),您都可以自由構建該配置對象。

同時考慮grunt.config('pkg.locale', 'en');覆蓋單個配置值後,您已初始化您的配置:http://gruntjs.com/api/grunt.config