前端工程化之包管理器

包管理器

(1)pnpm(基于hard link + symlink)

  • 基于硬链接机制(hard link)/内容寻址提升包的安装速度

    依赖包被存储在一个全局的store目录下,不同的项目依赖同一个包(版本相同)时,会硬链接至此位置,无需重新安装, 即使一个包的不同版本,pnpm 也会极大程度地复用之前版本的代码
  • 使用软连接(符号链接,symlink, 类似于windows快捷方式)的非扁平的node_modules结构

    仅将项目的直接依赖项添加到 node_modules 的根目录下, 通过符号连接查找虚拟磁盘目录.pnpm下的依赖包
node_modules/express/...     // 符号连接
node_modules/.pnpm/[email protected]/node_modules/xxx     // virtual store

(2)npm

  • package-lock.json锁定版本

(3)yarn

  • 并行安装
  • 缓存
  • yarn.lock锁定版本

性能对比:
pnpm > yarn > npm

命令区别:

install all:   npm install / yarn / pnpm install
install:   npm install xx (-D) / yarn add xx (-D) / pnpm add xx (-D)
uninstall:   npm uninstall xx (-D) / yarn remove xx (-D) / pnpm remove add xx (-D)
update: npm update xx / yarn upgrade xx / pnpm update xx

相关文件:
.lock文件
该文件记录了package.json依赖的模块,以及依赖的依赖,每次安装都是相同的结果,解决项目问题,此文件用来对整个依赖树(项目中引用的模块以及模块依赖的模块)进行版本固定
cnpm install无法识别该文件

.npmrc文件
一些常用的配置:
proxy, https-proxy:指定npm使用代理
registry: 指定npm下载安装包的源( 默认:https://registry.npmjs.org/

nvm: node.js版本管理工具
mrm: 镜像源管理工具

切换镜像源:
(1)nrm use xxxx
(2)npm install xxx -g --registry=url
(3)npm config set registry  url

你可能感兴趣的:(工程化npm包管理)