如何利用Nodejs开发命令行工具?看这里就对了!

在日常的前端开发工作中,我们经常会接触到一些命令行工具,例如nvmnrmpnpm,它们都可以通过指令的方式实现强大的功能,例如nvm可以非常方便的管理nodejs的版本,用于快速切换不同的nodejs版本。

在这里插入图片描述
既然这些命令行工具如此强大,那为何不自己尝试实现一下类似的工具呢?咱们说干就干!

开始实现

项目结构:

 dev
 │ - package.json 
 | - index.js
 └ ─ bin 
      |- cli.js

package.json 中配置 bin 字段。

{
  "name": "dev",
  "version": "1.0.0",
  "description": "开发一个终端工具",
  "main": "index.js",
  "bin": {
    "dev": "./bin/cli.js"
  },
  "scripts": {
    "start": "node index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "chiko",
  "license": "ISC"
}

想要实现一个终端工具,bin字段是必不可少的,它用于指定npm包中的可执行脚本的位置,当我们全局安装一个包时,bin字段定义的脚本会被添加到系统的路径中,使得我们可以在命令行界面的任何位置直接调用这些脚本。

那我们的cli脚本该如何写呢?

#!/usr/bin/env node

我们需要在该文件的第一行加上这行特殊代码,它的作用就是告诉操作系统应该使用哪个解析器或程序去执行脚本,这行代码的意思就是通过nodejs去执行。

下面就可以写上自己需要的功能了,这边推荐一个包来快捷的实现指令,那就是commander

npm install commander

简单实现一个案例:

#!/usr/bin/env node

const commander = require('commander');
const program = new commander.Command();

program
    .option('-s, --say <text>', 'say someting')

program.parse(process.argv);


const options = program.opts();
if (options.say) console.log(`say: ${options.say}`);

对于本地开发来说,想要测试自己写的包也很简单,通过npm link指令,可以将自己的包链接到自己的全局node_module目录下,当你修改模块代码时,所有使用该模块的项目都会立即响应这些更改。

在终端测试命令行:

dev -s hello // say: hello

成功输出say: hello,这样一个简单的命令行工具就完成了。

后话

这里推荐一下本人刚写完的命令行翻译包,支持六个平台的翻译,可以快捷切换平台和语种,现已发布到npm,可通过npm install -g tlm下载使用,npm搜索tlm即可看详细文档说明。
在这里插入图片描述

本项目采用typescript编写,通过tsc编译并打包js文件到npm,想要学习的可以看github源码。
链接跳转:多平台命令行翻译包,欢迎大家提出自己的想法!

觉得本项目还不错的,请给我个star吧!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值