Create your module folder
mkdir [cli_name] && cd [cli_name]
npm init
Fill out your information
Create your index.js
file:
#!/usr/bin/env node
console.log( 'CLI Tool Works!' );
Edit your package.json
- add in:
"bin": {
"namecli": "./index.js"
}
From inside the module directory, run:
$ [sudo] npm i -g
Test out your CLI Tool by typing in your command:
$ namecli
CLI Tool Works!
Now make your CLI Tool universal:
$ which namecli
/usr/local/bin/namecli
$ readlink /usr/local/bin/cli
../lib/node_modules/cli_name/index.js
$ npm link
/usr/local/bin/namecli -> /usr/local/lib/node_modules/cli_name/index.js
/usr/local/lib/node_modules/cli_name -> /Users/Me/src/cli_name
Now its installed globally!
Go into any folder and run your cli tool!
$ cd
$ namecli
CLI Tool Works!
Now make your extra stuff:
$ npm install --save commander
Add to your index.js
:
#!/usr/bin/env node
const
program = require('commander');
program
.arguments('<file>')
.option('-u, --username <username>', 'The user to authenticate as')
.option('-p, --password <password>', 'The user\'s password')
.action(function(file) {
console.log('user: %s pass: %s file: %s',
program.username, program.password, file);
})
.parse(process.argv);
Example use:
$ namecli -u Me -p sooperdooperpassword path/to/your/file
user: Me pass: sooperdooperpassword file: path/to/your/file
$ namecli --help
Usage: snippet [options] <file>
Options:
-h, --help output usage information
-u, --username <username> The user to authenticate as
-p, --password <password> The user's password
More:
$ npm install --save co co-prompt
Add to index.js
const
co = require('co'),
prompt = require('co-prompt'),
program = require('commander');
program
.arguments('<file>')
.option('-u, --username <username>', 'The user to authenticate as')
.option('-p, --password <password>', 'The user\'s password')
.action(function(file) {
co(function *() {
var username = yield prompt('username: ');
var password = yield prompt.password('password: ');
console.log('user: %s pass: %s file: %s', username, password, file);
});
})
.parse(process.argv);