psky,盘古(pangu)开天(sky),引申为创建、生成之意。
目前用于管理和生成项目模版、脚手架模版、ui组件库模版。
本工程采用monorepo方式,可以很方便的集成更多工具。
本工程是一个企业级的monorepo工程范例,利用了turbo的缓存编译,让开发编译速度更加快捷, 同时,工程包含了完整的开发、编译、发布、husky、文档集成。
每个公司都需要一个monorepo式的工具库,一个ui组件库。
开箱即用,工程包含了完整的开发、编译、发布、husky、文档集成。
可以轻松集成公司的所有工具包,并且使用统一的命名空间,方便npm包管理。
同时利用了turbo的缓存编译,让开发编译速度更加快捷。
这是一套经典的monorepo库范例,借鉴了umi源码和next.js
技术栈:
- 主体:monorepo + lerna + turbo + pnpm + workspaces + typescript
- 文档:dumi
- 调试:yalc
开箱即用,工程包含了完整的开发、编译、发布、husky、文档集成、example调试。
ui组件库要解决的难点:
- 如何生成文档,文档中可以展示demo示例并可查看源码,这里使用了dumi方案;
- 如何进行example调试,也可以通过文档实现,不过会比较重,这里另写了一套webpack配置用于测试demo,非常轻量便捷
技术栈:
- 主体:typescript + react + webpack5 + pnpm
- 文档:dumi
相比一般的create cli
,psky多了两大优点:
- 集成模版非常方便,可以很方便地集成来自git仓库的模版,和内置模版一起使用。
- 集成了本地项目管理能力:
- psky会记录所有通过psky生成的项目,以便查看;
- 通过psky生成的项目,下次要生成相同项目时,会提示是否要打开之前的项目或者继续生成新项目;
- 通过这些能力,尤其在做demo测试时,让你不需要重复安装项目,就可快速进行demo测试,同时也让你的工作区干净整洁
#需要切到node 16版本
npm i psky -g
psky my-app
#根据提示选择要使用的模版生成项目
内置模版,在packages/pangsky/templates
中,为了方便集成更多模版,另外的模版放到psky-template上维护。
本工具可以很方便地集成更多模版,执行下面命令:
psky config get
获取模版配置文件tplList.json
,修改文件如下,集成管理自己的模版:
repository
是模版仓库地址 gitee,因为下载流畅。
{
"tplList": [
{
"title": "一个模版描述",
"repository": "https://gitee.com/mayising/tpltest"
}
]
}
假如模版在仓库某个路径下,则配置为:
{
"tplList": [
{
"title": "一个模版描述",
"repository": "https://gitee.com/mayising/tpltest",
"path": "/react-demo"
}
]
}
根目录下执行 pnpm i && pnpm build
本项目根目录下执行
pnpm run build
pnpm run yalc
在其他任意一个目录下创建调试项目:
mkdir psky-debug
cd psky-debug
npm init
yalc add psky @pskyjs/utils
使用过程如果有报错,可能要再安装psky
@pskyjs/utils
依赖的下面两个包:
npm i ora@5.4.1 chalk@4.1.2 git-clone@0.2.0
后续更新时,本项目根目录下执行
pnpm run build
pnpm run yalc
调试项目
yalc update
后续即可进行开发调试了,在调试项目下:
mkdir test
cd test
node ../node_modules/psky/bin/create-psky.js
在其他任意一个目录下创建调试项目:
mkdir psky-debug
npm init
npm i psky
mkdir test
cd test
npx psky
pnpm run release #正式发布
pnpm run release --soon #快速发布,不提交github