hairylib 是使用 pnpm
/ turbo
/ changeset
管理的多个模块包(monorepo)的项目。
Monorepo 的好处是什么?
monorepo
中方便管理;后端用node.js
的项目放在monorepo
中也可以使用同一套技术栈管理。在CI/CD
等流水线过程中,方便统一迭代或升级版本,也方便做通用化的配置,适用到多个子项目当中。react
、vue
或TypeScript
等常用库,那可以通过lerna
或者yarn workspace
、pnpm workspace
将依赖提升到最外层,多个子模块/包复用同一个依赖,减小项目体积。what is pnpm ?
what is turbo and changeset ?
想了想没什么特别的,就不写了。
基于 github actions
工作流(.github/workflows/docs.yml
),自动部署 hairylib.com
文档构建使用 vitepress
,自动收集组合文档,生成 Type Declarations
和 side-bar
。
# .github/workflows/docs.yml
name: A TO A:GH_PAGES
on:
push:
paths:
- 'packages/**'
- '.github/workflows/docs.yml'
- 'package.json'
- 'pnpm-lock'
- 'pnpm-workspace.yaml'
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Build and Deploy
uses: jenkey2011/vuepress-deploy@master
env:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
# 你要操作的目标仓库
TARGET_REPO: TuiMao233/hairylib
# 构建结果存储的分支
TARGET_BRANCH: gh_pages
# 要使用的构建命令
BUILD_SCRIPT: npm i pnpm -g && pnpm i && pnpm docs:build
# 构建结果存储目录
BUILD_DIR: packages/.vitepress/dist/
在 .js 文件中引入 .ts 文件
require('esbuild-register')
// 要注意的是,因为 ts 使用 esm 的原因,export default 则需要在获取一层
module.exports = require('./scripts/rollup.config.ts').default
MIT License Copyright (c) 2019-PRESENT.