# 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 子项目名 ```