node.js 如何完美的从命令行接收参数所传递进来的值

比如在很多php py 文件中!都会从命令行接受参数的值并带入程序中!
我也想用node.js这么写 我目前是这样写的 感觉太费劲了!

var options = process.argv;
for(var i=0;i<canshu.length;i++)
{
    if(options[i].indexOf("-string")==0)
  {
        。。。。。
  }
    else if(options[i].indexOf("--start")==0)
  {
    ........
  }
}

感觉这样好费劲 有什么更加好一点的方法没?

阅读 50.5k
评论
    5 个回答

    evn.js

    #!/usr/bin/env node
    
    // 简单版本, 根据需要自己修改下
    function Program() {
      let $argvs = []
      let _this = this
      
      this.options = function (argv) {
        $argvs.push(argv)
        return this
      }
      this.getOptions = function () {
        console.log($argvs.toString());
      }
      this.parse = function (processArgv) {
        $argvs.forEach(item => {
          let option = item.toLocaleLowerCase()
          _this[option] = (function () {
            let index = processArgv.indexOf(option)
            if (index === 2) {
              return true
            } else if (index  !== -1) {
              console.log('您需要的参数应该是执行文件后的第一个参数');
              return false
            } else {
              return false
            }
          })()
        })
      }
    }
    
    // 使用方法
    let program = new Program()
    
    // 定义参数
    program.options('prod').options('dev').parse(process.argv)
    
    if (program.prod) {
      console.log('--prod');
      // todo 执行相关任务
    }
    if (program.dev) {
      console.log('--dev')
      // todo 执行相关任务
    }

    终端下执行:
    $ chmod 755 env.js
    $ env.js dev prod
    --prod


    更多有意思的方式可参考阮一峰的博客

    http://www.ruanyifeng.com/blo...

      相似问题
      推荐文章