Package Exports
- chopsticks
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (chopsticks) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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
.parse(['-f', 'true', '--no-foo', 'true', 'noop!', '--', 'huh'], { unknown: true }); // { // "_": [ // "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 parse(process.argv.slice(2), { array: 's' }); // { // "_": [ // "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 parse(process.argv.slice(2), { object: ['x', 'y', 'z'] }); // { // _: [], // 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 parse(process.argv.slice(2), { sentence: true }); // { // "_": [ // "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 parse(process.argv.slice(2)); // { // '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 ] parse(process.argv.slice(2), { nest: true }); // { _: [ 'rawr' ], // beep: { _: [ 'boop' ], a: 3 }, // n: 4, // robots: { _: [], x: 8, y: 6 } }
Stacktrace was broken
node
> require('chopsticks')('error')
# 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
import 'source-map-support/register';
or...
$ mocha --require source-map-support/register
you can check the original line number.
$ node
require('source-map-support/register');
require('chopsticks')('error');
# 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/chopsticks
cd chopsticks
npm install
npm test