使用 pnpm monorepo + ts 制作个功能完善的 CLI 命令行工具

使用 pnpm monorepo + typescript 制作个功能完善的 CLI 命令行工具,上传至 npmjs 仓库


前言

在卷卷的今天,我们可以看到前端框架和技术层出不穷,各种技术都伴有着一系列的生态诞生,说白了就是都有后台,有静态文档技术,有运行时依赖,有各种各样的轮子,当然也少不了 cli 这一套

对于大部分人来说最开始接触这个东西的应该是 vue-cli ,当时确实感觉很不错,如今发现很多脚手架和命令行工具完全可以使用 js / ts 来开发,都依赖着 nodejs npm 来运行


来吧:接下来我们也实践一个功能简单且常用的工具

先把仓库地址放出来,因为之前很多博客很多人都希望放代码的

github仓库

gitee仓库(同步github)

一、仓库搭建

1. 介绍功能

简单介绍下上面仓库这个 cli 工具的功能吧

参数 Options

-v, --vers: 查看版本号

-h, --help: 查看自定义帮助信息

命令 Commands

init: 初始化一个模版(包含文档和博客风格的 vitepress 主题模版),也就是远程仓库模版下载和本地文件修改

list: 展示模版仓库各个模版的最新提交信息,请求了 GitHub API

git: 展示某人远程仓库的列表,请求了 Github API

ver: 展示模版仓库分支的版本号,请求了 Github API

-l: 多国语言切换

2.开始搭建

我们使用比较新的 pnpm 搭建 monorepo 工程

先来看下项目目录

在这里插入图片描述
红框是我们必须要有的

  1. package.json

这里就正常写就可以,不过 scripts 脚本可以变一下,使用 pnpm 支持的更多的脚本

pnpm run -C packages/cli xxx

上述命令表示执行子模块中的 xxx 命令,这样就可以再根目录操作子模块脚本了

依赖说明:

fs-extra: fs 模块升级版

rimraf: 用来删除目录,忽略一些系统差异

ts-node: 便于我们使用 node 直接执行 ts 文件

{
   
  "name": "@vuetom-cli/root",
  "private": true,
  "workspaces": [
    "packages/*"
  ],
  "scripts": {
   
    "build": "pnpm run -C packages/cli tsc",
    "cli": "pnpm run -C packages/cli cli",
    "cli:init": "pnpm run -C packages/cli cli:init",
    "cli:list": "pnpm run -C packages/cli cli:list",
    "ts": "pnpm run -C packages/cli ts",
    "ts:init": "pnpm run -C packages/cli ts:init",
    "ts:list": "pnpm run -C packages/cli ts:list" 
  },
  "dependencies": {
   
  },
  "devDependencies": {
   
    "fs-extra": "^10.1.0",
    "rimraf": "^3.0.2",
    "ts-node": "^10.9.1",
    "typescript": "^4.8.2"
  }
}
  1. pnpm-workspace.yaml

这里声明包含的模块

packages:
  - 'packages/*'
  1. packages 包

这里面我们再分 3 个目录,一个是 cli 主项目目录

再搞两个模版(temp-docs / temp-blog)目录,用来模拟项目模版生成的功能

  1. 子模块结构

在这里插入图片描述
5. cli/package.json

该文件下包含了cli自己模块本身要用到了依赖包以及命令,最主要的是要看编译命令:

假设你以后的命令是 vuetom-cli

cli: 主命令,执行 pnpm cli 就相当于执行了 vuetom-cli

cli:init: command,相当于执行了 vuetom-cli init

cli:list: command,相当于执行了 vuetom-cli list

ts: 开发模式下执行的,方便变开发变测试

copy: 移动模版文件或者其他一些不需要经过编译的文件

tsc: 编译命令,将 ts 文件编译为 js

{
   
  "name": "vuetom-cli",
  "version": "0.2.5",
  "description": "A simple CLI for vitepress-theme-vuetom",
  "scripts": {
   
    "cli": "node ./bin/vuetom-cli.js",
    "cli:init": "node ./bin/vuetom-cli.js init",
    "cli:list": "node ./bin/vuetom-cli.js list"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值