如何开发一个项目脚手架cli

目录

背景

随着团队项目类型越来越多,方便后续快速去开发项目,会出现各种类型的项目模版项目。

这样开发只需要通过脚手架选择自己需要的项目类型,不需要去记住各个项目的代码仓库地址。

代码地址:https://github.com/duKD/create-editor-cli

正文

需要用到以下几个第三方库:

unbuild

一款轻量打包工具 默认支持ts , 可以输出 esModule commonjs 类型代码

prompts

用于终端命令行交互

progress

进度条

kolorist

优化字体显示样式

设置打包命令

javascript 复制代码
{
  "name": "create-editor-cli",
  "private": false,
  "version": "1.1.0",
  "description": "",
  // 在packjosn 文件中 设置打包命令 最终会被打包到 node_module 的 bin 目录下 
  "bin": {
    "create-editor-cli": "dist/index.cjs",
    "cec": "dist/index.cjs"
  },
  ...
 }

复习下 : 如何去使用 .bin 目录下的命令

  1. 全局安装的话 可以直接使用 cec 和 create-editor-cli
  2. 局部安装 的话 需要 在 packjson 的 script 中使用 或者 npx cec ,npx create-editor-cli

设计 更简单的使用方式

npm exec

npm exec 的执行流程

  • 在本地查找是否有对应的npm包
    • 若找到,则运行这个包的package.json中bin字段对应的可执行文件
    • 若未找到,在远程npm仓库查找是否有对应的npm包 若找到,加载完成后,再运行这个包package.json中bin字段对应的可执行文件

npx

直接 npx exec 和上面是一个效果

npm init/ npm create/ npm innit

javascript 复制代码
npm init xxx | npm create xxx 等价于 npx exec create-xxx

得出结论 当我们的包发到远程仓库时 可以直接 使用

npm create editor-cli 来创建项目

使用

pnpm create editor-cli 来初始化

javascript 复制代码
 ~ % pnpm create editor-cli
Library/pnpm/store/v3/tmp/dlx-59954      | Progress: resolved 1, reused 0, downlLibrary/pnpm/store/v3/tmp/dlx-59954      |   +1 +
Library/pnpm/store/v3/tmp/dlx-59954      | Progress: resolved 1, reused 0, downlLibrary/pnpm/store/v3/tmp/dlx-59954      | Progress: resolved 1, reused 0, downlLibrary/pnpm/store/v3/tmp/dlx-59954      | Progress: resolved 1, reused 0, downloaded 1, added 1, done
✔ 选择编辑器版本? › vue
✔ 输入项目名称 ... my-editor
开始下载模版...
========================================================================== 100%

下载完成,开始解压...

解压完成...

最后

由于私密安全问题 只提供了一个简单的实现思路 ,可以按照这个思路 ,去定制化开发属于自己公司的脚手架。

相关推荐
前端不太难4 分钟前
《Vue 项目路由 + Layout 的最佳实践》
前端·javascript·vue.js
LYFlied7 分钟前
【每日算法】 LeetCode 56. 合并区间
前端·算法·leetcode·面试·职场和发展
想学后端的前端工程师29 分钟前
【Vue3组合式API实战指南:告别Options API的烦恼】
前端·javascript·vue.js
否子戈39 分钟前
WebCut前端视频编辑UI框架一周开源进度
前端·音视频开发·ui kit
昔人'1 小时前
`corepack` 安装pnpm
前端·pnpm·node·corepack
萌萌哒草头将军1 小时前
pnpm + monorepo 才是 AI 协同开发的最佳方案!🚀🚀🚀
前端·react.js·ai编程
hboot2 小时前
💪别再迷茫!一份让你彻底掌控 TypeScript 类型系统的终极指南
前端·typescript
GISer_Jing2 小时前
深入拆解Taro框架多端适配原理
前端·javascript·taro
毕设源码-邱学长2 小时前
【开题答辩全过程】以 基于VUE的藏品管理系统的设计与实现为例,包含答辩的问题和答案
前端·javascript·vue.js
用户28907942162713 小时前
Spec-Kit应用指南
前端