繁体   English   中英

具有“ require”功能和传递参数的Gruntfile.js

[英]Gruntfile.js with “require” function and passing parameters

我有一个Grunt文件( Gruntfile.js ),用于构建angularjs组件。 我使用外部javascript文件( build.config.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 %>'内, taskConfigtaskConfig部分中使用。 现在,在build.config.js中指定了一些javascript文件,我需要根据指定的语言环境来加载这些文件,但是我不知道如何获取此变量,因为在build.config.js中没有grunt对象可以读取package.json文件。 因此,我无法在build.config.js

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

没有将build.config.js中的所有内容都放回Gruntfile.js有什么办法可以实现?

是。 Grunt模板仅指向Grunt配置本身。

因此对于配置:

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

模板<%= pkg.locale %>将等于字符串'en'

pkg: grunt.file.readJSON("package.json")只是将您的package.json文件作为javascript对象读取,并分配给配置中的pkg属性。

您可以自由地构建该配置对象,但是可以声明性地读取/解析JSON文件,或者require其他脚本来导出javascript对象(如./build.config.js看上去那样)。

还考虑grunt.config('pkg.locale', 'en'); 用于在初始化配置后覆盖单个配置值: http : //gruntjs.com/api/grunt.config

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM