pnpm让我节约了200G的磁盘空间

658 阅读1分钟

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