使用 JS 开发命令行程序
书写脚本
新建一个脚本,如 touch maomao.js
,内容如下
js
#!/usr/bin/env node
console.log('脚本')
#!/usr/bin/env node
用来表示它是一个 node 脚本
然后在命令行输入脚本路径运行即可
无路径运行
在 package.json
配置 bin
选项,如
json
"bin": {
"maomao": "maomao.js"
},
然后运行 npm link
即可
使用 Inquirer.js
进行命令行交互
js
#!/usr/bin/env node
const inquirer = require('inquirer')
const log = console.log
const promptList = [
{
type: 'list',
message: '请选择发布环境:',
name: 'env',
choices: [
{
name: '开发环境',
value: 'dev'
},
{
name: '测试环境',
value: 'test'
},
{
name: '预发环境',
value: 'pre'
},
{
name: '生产环境',
value: 'prod'
}
]
}
]
inquirer.prompt(promptList).then(({ env }) => {
log('你选择了:' + env)
})
使用 chalk 美化命令行输出
js
#!/usr/bin/env node
const chalk = require('chalk')
const log = console.log
log(chalk.blue('这是蓝色输出'))
使用 shelljs 运行系统命令或 npm 脚本
js
const shell = require('shelljs')
shell.exec('npm run dev')
完整案例(整合发布)
js
#!/usr/bin/env node
const inquirer = require('inquirer')
const chalk = require('chalk')
const shell = require('shelljs')
const log = console.log
const promptList = [
{
type: 'list',
message: '请选择发布环境:',
name: 'env',
choices: [
{
name: '开发环境',
value: 'dev'
},
{
name: '测试环境',
value: 'test'
},
{
name: '预发环境',
value: 'pre'
},
{
name: '生产环境',
value: 'prod'
}
]
}
]
inquirer.prompt(promptList).then(({ env }) => {
log(chalk.blue('正在运行: npm run ' + env))
shell.exec('npm run ' + env)
})
相关库
具体 api
可以查看对应库
- Inquirer.js 交互式命令行工具
- chalk 修改控制台内容输出的样式
- shelljs 是
Unix Shell
在Node.js API
层的轻量级实现,可以很方便的调用系统命令 - commander.js 编写指令和处理命令行