基础准备
1.新建一个项目,打开cmd命令,执行npm init,创建package.json
2.在根目录下创建一个不带后缀的系统文件,作为主入口文件
3.安装本文所涉及到的模块commander、inquirer、chalk,在根目录下执行 npm install commander inquirer chalk –save-dev,这时候会看到根目录下多了一个node_modules目录,里面有刚刚安装的几个模块,package.json里面devDependencies依赖了这几个模块,如下图
根目录
package.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
{
"name":
"app",
"version":
"1.0.0",
"description":
"玩转命令行开发",
"main":
"index.js",
"scripts": {
"test":
"echo \"Error: no test specified\" && exit 1"
},
"author":
"ykg",
"license":
"ISC",
"devDependencies": {
"chalk":
"^1.1.3",
"commander":
"^2.9.0",
"inquirer":
"^1.1.2"
}
}
|
主体内容
我们先来认识一下commander吧
commander 简介
呃~~官方时刻到了哈:commander灵感来自 Ruby,它提供了用户命令行输入和参数解析的强大功能,可以帮助我们简化命令行开发。
根据其官方的描述,具有以下特性:
- 参数解析
- 强制多态
- 可变参数
- Git 风格的子命令
- 自动化帮助信息
- 自定义帮助等
一个简单的实例
下面我们通过一个简单的实例来了解一下它的基本语法吧
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
const program =
require(
'commander')
const inquirer =
require(
'inquirer')
const chalk =
require(
'chalk')
program
.command(
'module')
.alias(
'm')
.description(
'创建新的模块')
.option(
'-a, --name [moduleName]',
'模块名称')
.action(
option => {
console.log(
'Hello World')
//为什么是Hello World 给你个眼神,自己去体会...
})
program.parse(process.argv)
|
执行一下看看效果吧!$ node app.js app (请各位看官自行体会这种执行方式哈)
//输出结果 Hello World
全局方式运行
我们可以通过一些配置,然后以 模块名 + command的方式运行,实现这种方式分三步走:
配置package.json的bin字段。bin字段有啥用呢?它可以用来存放一个可执行的文件,如下配置所示
123"bin": {"app": "app"}