icebreaker's monorepo 模板
功能特性
- 强大的
monorepo
管理 (pnpm
+turborepo
) - 单元测试框架集成 (
vitest
) - 全部都是
typescript
, 包括应用
类库
与cli
工具 - 代码规范与质量 (
eslint
+@icebreakers/eslint-config
+@icebreakers/stylelint-config
) git
提交规范 (husky
+commitlint
+lint-staged
)pnpm
Dockerfile
部署模板Github Action
自动发布npm
,github release
包 (changeset
)- 配置文件同步升级
npx @icebreakers/monorepo@latest
如何使用?
首先,访问本模板的 Github 地址,然后按照一下条件:
有
Github
账号的,可以登录后,点击右上角的Use this template
按钮没有
Github
账号的,可以点击Code
按钮,把这个仓库的源码,或clone
或下载到本地
然后在根目录 (pnpm-workspace.yaml
所在的位置) 执行 pnpm i
去安装依赖
没有
pnpm
的,可以使用npm i -g pnpm
来进行安装。什么! 你不会连
nodejs
还没安装吧?
清除默认的包(可选)
执行 pnpm script:clean
命令,可以删去大部分的初始 repo
,只保留一个 @icebreakers/bar
项目作为发包打包模板。
clean
命令执行完成之后,再去执行 pnpm i
来更新 pnpm-lock.yaml
, 并提交 pnpm-lock.yaml
文件来锁定 npm
包的版本。
模板包介绍
默认模板被放在根目录的 packages
和 apps
这 2
个目录里面
packages
@icebreakers/bar
-tsup
打包的库模板@icebreakers/foo
-unbuild
打包的库模板(不推荐!,unbuild
很久没有更新了)@icebreakers/monorepo
- 本仓库的更新配置服务,可直接根目录执行npx @icebreakers/monorepo@latest
执行远端cli
命令,进行项目依赖升级同步
tsup
是使用esbuild
打包库的,unbuild
是使用老版本的rollup
进行打包的
apps
@icebreakers/cli
- 使用typescript
编写的cli
程序模板@icebreakers/website
- 文档网站模板,使用vitepress
搭建,也是 monorepo.icebreaker.top 的源代码
更新包的依赖
在根目录中执行 pnpm up -rLi
来进行包的交互式更新,下面是解释:
-r
:recursive
递归选中所有repo
-L
:latest
更新到最新-i
:interactive
交互式
配置自动发包
本项目使用 changesets 进行包的发布和 changelog
的生成
在使用的时候,首先你需要做一些配置:
首先你需要安装
Github App
: changeset-bot然后,来到你复制这个模板仓库(
repo
), 上方里的Settings
Tab 页面,进行 2 个操作:
1. 在 Github 进行 PR 和发包
选择 Code and automation
> Actions
> General
然后在右侧 Workflow permissions
下方选择: Read and write permissions
然后选中 Allow GitHub Actions to create and approve pull requests
最后,点击下方的保存按钮即可。
这样 changeset
就有权限对你进行 PR
和代码版本更新了!
2. 在 npm 发包
选择 Security
> Secrets and variables
> Actions
然后在右侧的 Repository secrets
设置你的 NPM_TOKEN
这个可以在你的 npmjs.com
账号中生成获取
(假如你需要单元测试代码覆盖率,你需要设置 CODECOV_TOKEN
)
eslint + stylelint 校验
引用到的规则参考 https://eslint.icebreaker.top/
内置脚本
pnpm script:clean
删去大部分的初始repo
,只保留一个@icebreakers/bar
项目作为发包打包模板pnpm script:init
初始化一些package.json
里的字段pnpm script:sync
使用cnpm sync
功能,把本地所有的包,同步到npmmirror
上,需要安装cnpm
pnpm script:mirror
使用cnpm
binary mirror 功能,使用国内二进制下载地址 (使用 vscode 环境变量)
创建新的项目
在 monorepo
的任意位置,打开命令行,然后执行 npx monorepo new
即可创建一个空的类库,默认目录为 bar
可通过传入 可选参数 path
进行修改, 比如 npx monorepo new [path]
, 此时的目录就从 bar
变为了 [path]
配置同步方式
在根目录下执行: npx @icebreakers/monorepo@latest
这个命令会把所有的文件从最新版本,对你本地进行覆盖,你可以从 git
暂存区把你不想要的文件剔除
参数
npx @icebreakers/monorepo@latest --raw
这个命令会从全部文件中去除 Github
相关的文件
npx @icebreakers/monorepo@latest -i
这个命令会进行命令行选择模式,你可以在这里对想要复制的文件进行筛选
当然你可以同时使用这 2
个命令
npx @icebreakers/monorepo@latest -i --raw