一个快速搭建 Monorepo 项目的命令行工具

142 阅读1分钟

场景

@abmao/items是一个创建模版的工具,主要用来做纯 js 轮子,版本维护,推送 npm 包。原理很简单,就是git clone && npm run init

git clone xxx [name]

安装&使用

npm i @abmao/items -g
items create
? Please select a template (Use arrow keys)
❯ item 
  monorepo 
cd monorepo

有两套模板,分别是:

  • item: MultiRepo 项目
  • monorepo: 下面使用 @abmao/pkgs 方式管理的 monorepo 项目。

monorepo 项目

目录结构

image.png

特点

  • @abmao/pkgs + pnpm 🗂️
  • build: webpack5 📦
  • test: vitest 🔬
  • typescript 👽
  • eslint、husky 🔦
  • commit: commitizen 📤
  • docs: vitepress

命令

{
    "scripts": {
        // 项目初始化,items 安装的项目会自动触发
        "init": "pnpm i && npm run prepare", 
        // 用来代替 git commit 提交
        "commit": "cz",
        // 升级 & 发布版本
        "release": "esno ./scripts/release",
        // 构建
        "build": "pkgs run build",
        // 测试
        "test": "pkgs run test",
        // 测试并统计覆盖率
        "test:cov": "pkgs run test:cov",
        "lint-staged": "lint-staged",
        "lint": "eslint --ext=js,ts,json,md,tsx .",
        "lint:fix": "eslint --fix --ext=js,ts,json,md,tsx .",
        // 本地运行文档网站
        "docs:dev": "vitepress dev docs",
        // 构建文档网站
        "docs:build": "vitepress build docs",
        // 运行文档网站
        "docs:serve": "vitepress serve docs",
        "prepare": "husky install"
    },
}

item 项目

跟 monorepo 目录结构几乎一样,理念和用法一致

image.png