使Grunt中的全局对象成为可能

时间:2016-05-30 06:02:17

标签: javascript json node.js gruntjs

我正在尝试使用includereplace插件进行grunt。我试图通过使用以下代码获取JSON来为globals属性赋值:

grunt.registerTask('fetchProperties', 'Fetches the properties.json file', function() {
    properties = grunt.file.readJSON('properties.json');
    grunt.log.writeln(['Properties file loaded']);
});

现在当我properties.var_a时,它会正确返回var_a的值。 所以,我这样做了:

 grunt.registerTask('fetchProperties', 'Fetches the properties.json file', function() {
    properties = grunt.file.readJSON('properties.json');
    grunt.task.run('includereplace');
})

这是我的includereplace任务:

includereplace: {
        dist: {
            options: {
                globals: {
                    VAR_A: properties.var_a, 
                    VAR_B: properties.var_b
                },
            },
            files: [{
                src: '../myFiles/path/to/some/file/main.txt',
                dest: '../myOtherFiles/path/to/some/file/mainrep.txt'
            }]
        }
    }

现在,includereplace任务替换的值为undefined。 如何缓解这个问题? 此外,我已尝试使用grunt.config设置变量,但问题是,我有一个JSON文件,在加载时将返回一个对象而不是单个值。如何设置一个全局对象,可供执行中的所有任务用于设置其参数? 我正在grunt文件的开头加载JSON文件。这是我module.exports = function(grunt) { ...

中的第一行

1 个答案:

答案 0 :(得分:1)

这很有用!

grunt.initConfig({
    properties: grunt.file.readJSON('properties.json'),
    includereplace: {
    dist: {
        options: {
            globals: {
                VAR_A: '<%= properties.var_a %>', 
                VAR_B: '<%= properties.var_b %>'
            },
        },
        files: [{
            src: '../myFiles/path/to/some/file/main.txt',
            dest: '../myOtherFiles/path/to/some/file/mainrep.txt'
        }]
    }
  }
});

已使用https://stackoverflow.com/a/16792592/2459789