2014-09-11 45 views
0

我想从终端使用grunt获取const名称,并在uglify中使用它。这是我希望发生的:从终端执行const in grunt

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

我用:

咕噜--target =布拉布拉

传递参数,所以MYCONST应该从终端(输入在这种情况下,布拉布拉)。我似乎无法找到一种方法来代替myConst(在代码中)。这是可能的吗?我该怎么做?

回答

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这样的命令行处理库。