Installation
npm install chopsticks --save
Usage
chopsticks(args, opts={})
-> argv
-
opts.string
-
opts.boolean
-
opts.alias
-
opts.default
-
opts.stopEarly
-
opts.dash
(akaopts['--']
) -
opts.unknown
minimist-v1.2.0 spec completed.
New features
-
Emoji support 👍 - can use emoji to short flags.
node -e 'console.log(require("minimist")(["-🍣👹👺"]))'# { _: [], '�': '�👹👺' }node -e 'console.log(require("chopsticks")(["-🍣👹👺"]))'# { '🍣': true, '👹': true, '👺': true, _: [] } -
opts.unknown=true
- return the detailed object atargv.unknown
.;// {// "_": [// "huh"// ],// "unknown": [// Flag { type: 'short', name: 'f', value: 'true' },// Flag { type: 'long', name: 'foo', value: false },// "true",// "noop!"// ]// } -
opts.array
- the specified flag takes the following argument continually. (like a npm-run-all)// $ node program.js -s cover lint report -s foo bar baz -- huh;// {// "_": [// "huh"// ],// "s": [// ['cover', 'lint', 'report'],// ['foo', 'bar', 'baz']// ]// } -
opts.object
- if specify flag names, the value of the specify flag is handled as key of the object.// $ node program.js -x one --y.two foo -z=three.baz;// {// _: [],// x: {// one: true,// },// y: {// two: 'foo',// },// z: {// three: {// baz: true,// },// },// },if
true
, will handle all long flag without equal signs as object (e.g. affects--foo
, not-f
or--foo=bar
) -
opts.sentence
- iftrue
, argument with right-comma/right-period, is defined in "sentence". (like an abigail)// $ node program.js lorem. cover, lint, report. 'foo bar', baz. huh -- huh;// {// "_": [// "huh",// "huh"// ],// "sentence": [// ['lorem'],// ['cover', 'lint', 'report'],// ['foo bar', 'baz']// ]// } -
Relative Filename Flag - if the flag name begins with a dot(e.g.
--./path/to/file
), it handled as a flag name.// $ node program.js --use-popular-plugin --./my-extra-plugin.js customValue;// {// 'use-popular-plugin': true,// './my-extra-plugin.js': 'customValue',// _: []// } -
opts.nest
- iftrue
, recursively parsing the inside of brackets ([]
). like a browserify syntax(aka subarg)// $ node program.js rawr --beep [ boop -a 3 ] -n4 --robots [ -x 8 -y 6 ];// { _: [ 'rawr' ],// beep: { _: [ 'boop' ], a: 3 },// n: 4,// robots: { _: [], x: 8, y: 6 } }
Stacktrace was broken
node> require# TypeError: args is not an array # at n.u.createClass.value (/path/to/chopsticks/lib/index.js:1:59798)
published code is compressed and the source map is provided. sourcemap isn't supported on NodeJS(current v5.10.0). but this resolved in the node-source-map-support.
npm install source-map-support --save-dev
;
or...
$ mocha --require source-map-support/register
you can check the original line number.
$ noderequire;require;# TypeError: args is not an array # at n.u.createClass.value (/Users/59naga/Downloads/chopsticks/src/Chopsticks.js:58:13)
Development
Requirement global
- NodeJS v5.10.0
- Npm v3.8.3
git clone https://github.com/59naga/chopstickscd chopsticksnpm install npm test