npm/yarn/pnpm的区别
npm 完全从互联网获取第三方库
yarn 缓存下载过的库到全局环境,下次再下载时从本地拉库(同样版本的库会存在多份)
pnpm 缓存下载过的库到全局环境,下次再下载时从本地拉库,每个项目内硬链接到全局环境路径
单个项目配置pnpm(和yarn比的好处是节约磁盘空间)
项目下新建.npmrc写入下面配置
shamefully-hoist=true
strict-peer-dependencies=false
删除之前的node_module目录再pnpm install
管理所有npm相关的微应用(和yarn比的好处是节约磁盘空间)
所有项目在一个目录下时参考git.zhihuiyunyan.cn/cloudapp/st…
1 新建一个目录micro
2 新建pnpm-workspace.yaml写入
package
- 'packages/**'
3 新建.npmrc写入下面配置
shamefully-hoist=true
strict-peer-dependencies=false
4 新建package.json写入
{
"name": "struct-frontend",
"version": "1.0.0",
"description": "基于pnpm的工程管理",
"main": "index.js",
"scripts": {
"preinstall": "npx only-allow pnpm",
"start": "pnpm --filter \"*\" start",
"build": "pnpm --filter \"*\" build",
"branch": "git submodule foreach \"git checkout dev-jx\"",
"submit": "git submodule foreach \"git add . || git commit -m \"一键提交脚本,归档处理\" || git push\"",
"pull": "git submodule init && git submodule update"
},
"author": "Huang",
"license": "ISC",
"gitHooks": {
"pre-commit": "lint-staged"
},
"lint-staged": {
"*.{js,jsx,less,md,json}": [
"prettier --write"
],
"*.ts?(x)": [
"prettier --parser=typescript --write"
]
}
}
4 新建packages目录放入所有微应用的目录(删掉node_modules)
5 在目录micro执行pnpm install