#!/usr/bin/env node
var argv = require('yargs').argv;console.log('hello ', argv.name);
使用时,下面两种用法都可以。
$ hello --name=tom
hello tom$ hello --name tom
hello tom
也就是说,process.argv 的原始返回值如下。
$ node hello --name=tom
[ 'node',
'/usr/local/bin/hell',
'--name=tom' ]yargs 可以上面的结果改为一个对象,每个参数项就是一个键值对。
六.发布命令包
通过npm publish进行发布,前提是有npm帐号。如何操作可以查看npm 官方文档。
本文是通过原生node.js来开发命令工具,而vue-cli是采用commander.js来简化命令工具开发,
了解了执行流程,去学习对应的模块,就很好知道原理了!,本文抛个砖头

最后:有时我们用到的命令行不是全局安装的,而是本地安装的
1. package.json bin字段
bin项用来指定各个内部命令对应的可执行文件的位置。
"name":"someTool",
"bin": {
"someTool": "./bin/someTool.js"
}上面代码指定,someTool 命令对应的可执行文件为 bin 子目录下的 someTool.js。
当一个项目依赖上面的someTool工具时,同时只是本地安装
{
"name": "myproject",
"devDependencies": {
"someTool": "latest"
},
"scripts": {
start: 'someTool build' //等同于start: './node_modules/someTool/someTool.js build' }
}
npm会寻找这个文件,在
node_modules/.bin/ 目录下建立符号链接。在上面的例子中,someTool.js会建立符号链接
npm_modules/.bin/someTool 。由于
node_modules/.bin/ 目录会在运行时加入系统的PATH变量,因此在运行npm时,就可以不带路径,直接通过命令来调用这些脚本。因此,像上面这样的写法可以采用简写。
scripts: {
start: './node_modules/someTool/someTool.js build'
}// 简写为
scripts: {
start: 'someTool build'
}
所有
node_modules/.bin/ 目录下的命令,都可以用
npm run [命令] 的格式运行。在命令行下,键入
npm run ,然后按tab键,就会显示所有可以使用的命令。1. npm run
上面代码中,
scripts









