monorepo的概念
我的理解就是将不同项目的公共应用的部分提取出来,方便维护
pnpm支持开发monorepo项目,提供了workspace的概念
参考链接
共享的文件新建index.ts暴露。在package.json中指定入口文件
通过pnpm命令在需要的项目中安装
解决前端开发包管理器混用的问题
packageManager
参考链接
packageManager从 Node.js 16.x 开始,package.json 文件可以有一个 packageManager 属性来定义所需的包管理器及其精确版本
需要配合corepack进行,
启用命令是corepack enable/corepack enable npm
禁用命令是corepack disable/corepack disable npm
启用后使用其他非配置命令会给予提示并跳出安装
npm7.0之前
使用only-allow进行安装前的提示,告知程序员应使用什么命令进行安装
关键词:preinstall , process.env.npm_config_user_agent
在执行npm install之前会执行preinstall钩子的命令
"script":{
"preinstall":"npx only-allow pnpm"
}
源码中主要是通过process.env.npm_config_user_agent进行有关信息截取
有部分文章推荐npm-only-allow
注:npm7.0版本后不再支持,因为 preinstall钩子会在安装过依赖包后再触发
pnpm 6.21
版本开始新增了 pnpm:devPreinstall 脚本,所以将 preinstall 换成 pnpm:devPreinstall 即可达到 NPM 7.0 以下版本的效果。