Nodejs 开发命令行工具

准备工作

起步

  • 新建一个目录,作为命令行工具源码目录。
mkdir webflow-cli
  • 初始化 package.json 文件
npm init --yes
  • 进入命令行工具源码目录(webflow-cli),并且新建 bin 文件夹,并创建主程序,wflow.js
cd webflow-cli

mkdir bin

touch wflow.js
  • wflow.js 中写入测试程序
#!/usr/bin/env node

console.log('wflow is run')
  • 在根目录下的 package.json 文件中添加 bin 字段,并增加相关命令
{
  "bin":{
    "wflow":"bin/wflow.js"
  }
}
  • 安装到全局
npm install . -g
  • 测试命令可行性

在命令行中输入:(哪个文件路径下无所谓)

wflow

打印显示 wflow is run 则表示,测试通过。

  • 建立链接,修改源码时,wflow 命令执行的效果为最新源码执行效果。

webflow-cli 根目录下,运行:

npm link

现在可以修改 webflow-cli/bin 文件夹下的 wflow.js ,再执行 wflow 检测是否已经 link 成功了。

以上,就完成了命令行的基本逻辑。

进阶

安装依赖
npm install commander inquirer --save
  • commander : 让开发 Nodejs 命令行更加简单(node.js command-line interfaces made easy)
  • inquirer : 常见的交互式命令行用户接口的集合。
使用
  • commander 管理可以使用的命令
const program = require('commander')

program.version('1.0.0')
  .usage('<command> [项目名称]')
  .command('init', '初始化项目')
  .command('g', '自动生成项目文件')
  .parse(process.argv);
1. usage :命令行工具的用法说明
2. command:可添加多个,每一个是一个命令,对应着 `bin` 目录下的一个文件。比如以上的对应 bin 目录下的 wflow-init.js 和 wflow-g.js;
3. parse:将参数格式化
  • inquirer 的基本使用

    • 交互型之-选择

      inquirer.prompt([
          {
            type: 'list',
            name: 'templateType',
            message: '请选择模板',
            choices: Object.keys(downloadUrls).map(item => {
              return { name: item }
            })
          }
        ])
    • 交互型之-回答

      inquirer.prompt([
        {
          name: 'name',
          message: '请输入项目名称',
          default: projectName
        },
        {
          name: 'version',
          message: '请输入项目版本',
          default: '1.0.0'
        },
        {
          name: 'description',
          message: '请输入项目描述',
          default: projectName
        },
      ])

      更多用法参考地址

  • Nodejs 执行系统命令

const exec = require('child_process').exec;

exec('echo 1',(err,stdout,stderr)=>{
    // console.log('运行错误',err);
    console.log('标准输出流',stdout);
    // console.log('错误输出',stderr);
})

演示代码

github 源码

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值