命令行的交互应该都不陌生,从最简单的看版本(node --version)到用命令行创建项目(vue create project),以前不知道的时候觉得做这些交互的应该很难,现在知道了一些就不觉得那么神秘了。
一般来说我们都会直接用现成的包,包括那些框架也都是用commander这个包去实现。今天就是简单了解一下commander的用法。
想要用命令,就要链接到全局,之前已经分享过npm link,这边简单再说一下:
初始化项目:npm init -y
package.json配置bin:“bin”: “./bin/wade.js”,
package.json的bin可以是对象也可以是字符串,如果是字符串那么使用的命令就是name那个字段,如果是对象那就是对象的key
新建bin文件夹和wade.js文件,声明和打印语句:
#! /usr/bin/env node
console.log(‘is wade cmd’)
当前目录执行npm link:
执行wade:
前期准备工作做好了,接下去开始使用commander。
安装:npm install commander
简化使用引入:const { program } = require(‘commander’);大概知道下面几个命令就够了:
command:自定义执行的命令
oprton:自定义选项
description:命令的描述
action:命令执行之后执行的方法
parse:解析命令行参数,放在最后
写了一个create的命令和几个选项还有最基本的版本和help:
program
.command('create <app-name>')
.description('create a new project')
.option('-f, --force, overwrite target derectory if it exists')
.action((name,cmd) => {
console.log(name, cmd)
})
program.on('--help', () => {
console.log('run wade-cli <command> --help show details')
})
program
.version(`wade@${require('../package.json').version}`);
program
.option('-d, --debug', 'options debug')
.action((name, cmd) => {
console.log(name)
});
//解析用户传入的命令
program.parse(process.argv);
执行:
知道了大概的命令行交互,就可以通过执行的命令进行相应的操作,比如进行选项,拉取模板之类的,想要了解更详细的commander可以到GitHub上看:
https://github.com/tj/commander.js/blob/HEAD/Readme_zh-CN.md