从终端实现grunt中的const

时间:2014-09-11 05:52:28

标签: javascript gruntjs uglifyjs grunt-contrib-uglify

我想使用grunt从终端获取const名称,并在uglify中使用它。这就是我想要发生的事情:

    uglify: {
        options: {
          sourceMap: true,
          compress: {
               global_defs: {
                 <myConst>: false
             }
          }
        },
        ugly: {
            src: 'beautiful.js',
            dest: 'ugly.js'
        }
    }

我用:

grunt --target = blabla

传递参数,所以myConst应该是终端的输入(在本例中为blabla)。我似乎无法找到一种方法来代替myConst(在代码中)。是否有可能,我该怎么做?

1 个答案:

答案 0 :(得分:1)

由于运行grunt会在process.argv中为您提供以下命令行参数:

  1. 节点
  2. path_to_grunt_script
  3. 你不能简单地做一些事情:

    module.exports = function(grunt) {
    
        var compress_defs={},
            args=process.argv.slice(2); // take all command line arguments skipping first two
    
        // scan command line arguments for "--target=SOMETHING"
        args.forEach(function(arg){
            if(arg.match(/--target=(\S+)/)) { // found our --target argument
                compress_defs[RegExp.$1]=false;
            }
        });
    
        grunt.initConfig({
            uglify: {
                options: {
                    sourceMap: true,
                    compress: {
                        global_defs: compress_defs
                    }
                },
                ugly: {
                    src: 'beautiful.js',
                    dest: 'ugly.js'
                }
        });
    };
    

    或者更好的是,使用像minimist这样的命令行处理库,而不是滚动自己。