Skip to content

鼓励作者:欢迎 star 或打赏犒劳

使用 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)
})

image

相关库

具体 api 可以查看对应库

  • Inquirer.js 交互式命令行工具
  • chalk 修改控制台内容输出的样式
  • shelljsUnix ShellNode.js API 层的轻量级实现,可以很方便的调用系统命令
  • commander.js 编写指令和处理命令行

如有转载或 CV 的请标注本站原文地址