Skip to content

linfenpan/process-argv-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

背景

常需要从运行命令中,获取参数,现有的工具,不能很好的区分npm scripts与命令行间的参数,所以才有了这个项目。

参考如下场景:

// package.json
{
  "scripts": {
    "server": "node index.js --server=3005 --open=index.html"
  }
}

假设在 package.json 中,配置了 npm run server 命令,能快速启动服务器,并且打开页面 index.html

在控制台,我们这样调用:

npm run server --staticDirname=xxx

其中 --dirname=xxx 是决定服务器运行时,静态资源路径来源的。

这时候,我们 process.argv 中,获取到的,只有:

console.log(process.argv); // => [node.exe, index.js, '--server=3005', '--open=index.html']

其中的 --dirname=xxx 去哪呢?此项目,解决的,就是这个问题。

API

本项目,把 package.jsonscripts 自带的参数,称为 inner参数,命令行中,自己输入的参数,称为 outer参数

例子:

const Parser = require('process-argv-parser');
const parser = new Parser();

// 定义参数值的转换方法,否则,默认都是字符串 或 Boolean 值
// -d xxx => { dirname: 'xxx' }
// --server=1000 => { server: 1000 }
// -o index.html => { open: 'index.html' }
parser
  .option('-d', 'dirname', Parser.String)
  .option('--server', Parser.Int)
  .option('-o', 'open');

const data = parser.parse(/* void 0[代表转换当前控制台传入的参数]  或 数组: ['--server=3005', '--open', 'index.html'] */);

// 如果是 npm run xxx --param1=xx 则会在 outer 中体现
// 否则,都在 inner 中,获取参数
console.log(data); // data => { inner: {}, outer: {} }

About

process.argv 参数转换为对象

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published