发音:/mɑːneɾpoʊ/ 嘛呢 rue 坡
使用 pnpm + Vite + monorepo + workspace 是目前构建项目的推荐实践,具备高性能、依赖共享、模块解耦等优势
mkdir monorepo && cd monorepo
pnpm init
packages:
- 'packages/*'
shamefully-hoist=true
mkdir packages && cd packages
pnpm create vite vue-app --template vue
{
"name": "@monorepo/vue-app",
"private": true
}
在根目录 package.json 中添加:
{
"scripts": {
"dev:vue": "pnpm -F @monorepo/vue-app dev"
}
}
cd packages pnpm create vite vue-app1 --template vue pnpm create vite vue-app2 --template vue
monorepo/
├── pnpm-workspace.yaml
├── pnpm-lock.yaml
├── package.json
├── .npmrc
├── apps/ # 实际项目工程
└── packages/
└── another-vue-app/ # Vue3 子项目或插件
├── src/
├── package.json
└── vite.config.ts
└── vue-app/ # Vue3 子项目或插件
├── src/
├── package.json
└── vite.config.ts
prettier 是什么? 一个代码格式化工具,可以格式化任何代码,使代码更加美观,更加易于阅读,更加易于维护
i. 安装
pnpm add -D prettier --workspace-root
ii. 根目录下创建 .prettierrc 文件,配置如下:
{
"singleQuote": true,
"jsxSingleQuote": true,
"semi": false,
"useTabs": false,
"tabWidth": 2,
"bracketSpacing": true,
"jsxBracketSameLine": false,
"arrowParens": "always"
}
iii. 在 CI/CD 中自动格式化,根目录下创建.lintstagedrc.json ;配置如下:
pnpm add -D lint-staged --workspace-root
.lintstagedrc.json
{
"**/*.{js,ts,jsx,tsx}": ["prettier --write"]
}
Editorconfig for VS Code 是什么? 一个用于编辑器的配置文件,可以自动格式化代码,使代码更加美观,更加易于阅读,更加易于维护。
这是一个 VS Code 的插件,可以通过扩张商店安装
配置如下:
root = true
[*]
charset=utf-8
end_of_line=lf
insert_final_newline=true
indent_style=space
indent_size=2
max_line_length = 100
[*.{yml,yaml,json}]
indent_style = space
indent_size = 2
[*.md]
trim_trailing_whitespace = false
[Makefile]
indent_style = tab
packages 中创建一些模块使用 umi 快速构建一个用于展示基础组件的项目
i. 初始化
pnpm dlx create-umi@latest
ii. 安装packages下的依赖
pnpm add @monorepo/ui @monorepo/icons @monorepo/pro-components --workspace
i. 使用 vite 创建一个 react 项目
pnpm create vite my-vue-app --template react-ts
ii. 安装packages下的依赖
pnpm add @monorepo/ui @monorepo/icons @monorepo/pro-components --workspace