You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.3 KiB
74 lines
1.3 KiB
3 months ago
|
# 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)
|
||
|
}
|
||
|
```
|