如何将动态配置传递给Gruntfile.js

时间:2019-02-19 08:11:31

标签: javascript ecmascript-6 gruntjs babeljs transpiler

我写了艰苦的任务,将ES6移植到ES5。以下是我的 Gruntfile.js 文件

module.exports = function (grunt)
{
    require("load-grunt-tasks")(grunt);

    grunt.initConfig({
        "babel": {
            options: {
                presets: ['es2015']
            },
            dist: {
                files: [{
                  expand: true,
                  cwd: '/Users/pankajmeshram/Documents/IVWorkSpace/enfresh/resources/modules',
                  src: ['**/*.es6'],
                  dest: '/Users/pankajmeshram/Documents/IVWorkSpace/enfresh/resources/modules',
                  ext: '.js'
              }]
            }
        }
    });

    grunt.registerTask("default", ["babel"]);
};

在此文件中,我想动态传递cwd和dest选项,以便可以将其用于其他项目,并且我们所有项目都具有通用版本。

如果以前有人从事此工作,则可以为该任务提出一些方法或其他替代解决方案。

1 个答案:

答案 0 :(得分:0)

module.exports = function(grunt) {
    require("load-grunt-tasks")(grunt);

    grunt.initConfig({
        "babel": {
            options: {
                presets: ['es2015']
            },
            dist: {
                files: [{
                    expand: true,
                    cwd: "<%= cwd %>",
                    src: ['**/*.es6'],
                    dest: "<%= dest %>",
                    ext: '.js'
                }]
            }
        }
    });

    grunt.registerTask("dynamicConfigs", "Set Dynamic Configs", function (argName, argValue) {
        grunt.config.set(argName, argValue);
    });

    grunt.registerTask("default", ["dynamicConfigs:cwd:/Users/vineethgn/Documents/IVWorkSpace/enfresh/resources/modules", "dynamicConfigs:dest:/Users/vineethgn/Documents/IVWorkSpace/enfresh/resources/modules", "babel"]);
};

您可以将这些属性定义为模板,然后在调用babel任务之前,调用新创建的dynamicConfigs任务。 在dynamicConfigs内部,您基本上是在grunt.config中设置键值对。 确保像上面的示例代码一样,使用要设置的参数调用dynamicConfigs任务。