NPM 制作命令行工具 - 入门案例

一、简介

  • 经常通过 npm 安装 vue-clicreate-react-app 之类的命令行工具,那么如何简单的制作一个命令行工具呢?只需要几步即可!

二、制作

  • 创建 npm 命令行工具文件夹(例如:dzm-cli

  • 初始化 dzm-cli,得到 package.json 配置文件。

    $ npm init -y
    
    {
      "name": "dzm-cli",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "keywords": [],
      "author": "",
      "license": "ISC"
    }
    
  • 根目录新建 index.js,添加测试代码

    #!/usr/bin/env node
    
    // 输出命令带的参数
    console.log(process.argv)
    
  • 可以本地测试执行下 index.js

    $ node index.js
    
    # 输出
    [
      '/Users/xxx/.nvm/versions/node/v16.20.0/bin/node',
      '/Users/xxx/Desktop/Project/dzm-cli/index.js'
    ]
    
    $ node index.js 参数1 参数2 参数3 ....
    
    # 输出
    [
      '/Users/xxx/.nvm/versions/node/v16.20.0/bin/node',
      '/Users/xxx/Desktop/Project/dzm-cli/index.js'
      '参数1',
      '参数2',
      '参数3'
    ]
    
  • 然后在 package.json 中添加 bin 字段

    bin 字段的 key 就是命令(例如:vue-clicreate-react-app

    value 指向该命令对应的脚本路径(例如:index.js

    不同的 key 对应不同的命令跟处理脚本

    这里指定一个 dzm-cli 命令,并指定刚新建的 index.js 最为处理脚本,然后对 package.json 可以进行简化下,需要什么其他配置字段可以自己加:

    {
      "name": "dzm-cli",
      "version": "1.0.0",
      "description": "",
      "bin": {
        "dzm-cli": "index.js"
      }
    }
    

    image.png

三、本地测试与发包

  • 先本地测试一下,在 package.json 目录通过创建本地软链进行测试

    # 创建测试链接
    $ npm link
    
    # 移除测试链接
    $ npm unlink dzm-cli
    

    执行后 npm 本地就会通过项目中 package.jsonbin 字段创建对应的命令可执行文件,然后就可以直接使用命令测试了。

    $ dzm-cli
    
    $ dzm-cli 参数1 参数2 参数3
    
  • 测试没有问题后,可以通过 $ npm publish 发包了!注意:发包时必须保证 npm 源为官方源,不能是第三方源,要不然会发包失败!没有 npm 账号的自行官网注册一个。(附:NPM 上传发布详细流程

    image.png

三、使用

  • 发包成功后,项目中安装测试一下

    $ npm i -g dzm-cli
    
  • 项目中使用

    $ dzm-cli
    
    # 输出
    [
      '/Users/xxx/.nvm/versions/node/v16.20.0/bin/node',
      '/Users/xxx/Desktop/Project/dzm-cli/index.js'
    ]
    
    $ dzm-cli 参数1 参数2 参数3
    
    # 输出
    [
      '/Users/xxx/.nvm/versions/node/v16.20.0/bin/node',
      '/Users/xxx/Desktop/Project/dzm-cli/index.js'
      '参数1',
      '参数2',
      '参数3'
    ]
    
  • 然后就可以通过判断参数进行处理了,也可以使用相应的插件库更好的对命令进行处理!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡尔特斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值