alioth/before/monorepoTest/README.md
2025-05-30 09:18:01 +08:00

81 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Monorepo的使用方法
1. 安装pnpm
```bash
npm i -g pnpm
```
2. 新建monorepo项目
```bash
mkdir monorepo-project
```
3. 初始化项目
```bash
# pnpm init 现在不能使用-y
cd monorepo-project
pnpm init
```
4. 新建workspace定义文件
> 参考官网给出的例子 `https://pnpm.io/zh/pnpm-workspace_yaml`
```bash
echo "packages:
- 'packages/*'" > pnpm-workspace.yaml
```
5. 在packages下建项目因为上免得文件声明的是`packages`,你也可以建立其他的目录后声明)
```bash
cd packages
mkdir projectA
mkdir projectB
# 开始初始化各个项目
```
6. 各个项目互相引用
*第一次不要使用`pnpm add`在子项目的package.json中直接写依赖*
```json
{
"dependencies": {
"tools": "workspace:*",
}
}
```
*后面可以在主项目目录使用`pnpm add 像添加的依赖包名 --filter 给那个项目添加`*
7. 引用完了记得在主项目构建`pnpm i`
8. 启动项目
```bash
# pnpm run -C packages/web dev
pnpm run -C packages/子项目路径 子项目中的启动命令
```
> scripts中的文件的意思是禁用npm
> 在package.json中添加这条命令 `"preinstall": "node ./scripts/preinstall.js"`
```js
if(!/pnpm/.test(process.env.npm_execpath || '')) {
console.log('只能使用pnpm');
console.warn()
process.exit(1)
}
```
9. 其他命令
```bash
# 给公共区域添加包
pnpm add -w axios
# 给指定子项目添加包
pnpm add axios --filter 子项目名
```