- packages: 可复用的基础通用包
- projects-*: 多项目业务包
- templates: 自定义灵活高效的代码生成器
- scripts: 自定义脚本 管理复杂多项目
- docs: 项目文档
- examples: 示例代码 常用代码模板和代码块提炼
- tests: 测试模块
- Taro
- React
- Lerna
- Vite
- Pnpm
- Tailwind CSS
- CSS Variables
npm i -g lerna && npm i -g yarn && npm i -g gulp
npm run bootstrap:all
lerna init
- lerna init: 初始化项目
- lerna bootstrap: 自动构建项目依赖并建立软连接
- lerna link: 软连接本地依赖包
- lerna ls: 列出当前项目所有包
- lerna clean: 清理包下的node_modules文件
- lerna add: 添加依赖(类似npm install)
- lerna run: 按拓扑图运行
- lerna import: 导入已存在的multirepo项目到lerna管理的monorepo 保存git历史记录
- lerna publish: 发版到npm仓库
- npm whoami
- npm login
-
默认是npm, 而且每个子package都有自己的node_modules, 通过这样设置后, 只有顶层有一个node_modules
-
package.json 文件加入 "private": true, "workspaces": [ "packages/*" ],
-
lerna.json 文件加入 "useWorkspaces": true, "npmClient": "yarn",
cd packages mkdir core common utils components
- 分别进入目录初始化包 cd components yarn init -y or npm init -y
lerna add components --scope=app
本地调试或非npm包 引入如: "athena-components": "^1.0.0" athena-components 为package.json内name名称 components为文件夹名称
- 默认是npm i,因为我们指定过yarn 使用yarn install, 会把所有包的依赖安装到根node_modules lerna bootstrap
- 会打tag, 上传git, 上传npm。 如果包名是带scope的例如:"name": "@my/app", 那需要在packages.json添加 "publishConfig": { "access": "public" },