0

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

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

我用:

咕噜声--目标=blabla

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

4

1 回答 1

1

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

  1. 节点
  2. path_to_grunt_script

你不能简单地做类似的事情:

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这样的命令行处理库,而不是自己滚动。

于 2014-09-11T06:21:38.597 回答