【每日一题NO.68】NPM2与NPM3的区别
npm2
所有项目依赖是嵌套关系。而 npm3
为了改进嵌套过多、套路过深的情况,会将所有依赖放在第二层依赖中(所有的依赖只嵌套一次,彼此平行,也就是平铺的结构)
npm2
依赖安装的时候比较简单,直接按照包依赖的树形结构下载填充本地目录结构,也就是说每个包都会将该包的依赖组织到当前包所在的 node_modules
目录中。npm3
则会对依赖安装进行了改造,采用扁平结构的思路来组织依赖包的目录结构。具体的就是npm install
的过程时:按照 package.json
里依赖的顺序依次解析,遇到新的包就把它放在第一级目录,后面如果遇到一级目录已经存在的包,会先判断该版本,如果版本一样则忽略,否则会按照npm2
的方式依次挂在依赖包目录下。
关于扁平的目录结构,yarn
从出生那天就包含这个特性。yarn
的出现给 npm
带来了巨大的压力,后来,npm 学习了 yarn
先进的理念,不断的对自身进行优化,到了npm6
版本,npm
几乎完全解决了自身的问题,并拥有了下边的特性:
目录扁平化 并行下载 本地缓存 使用package-lock记录确切依赖 增加了大量的命令别名(解决命名不够语义化的问题) 内置了npx,可以启动本地的CLI工具 极大的简化了控制台输出
所有《每日一题》的 知识大纲索引脑图 整理在此:https://www.yuque.com/dfe_evernote/interview/everyday
你也可以点击文末的 “阅读原文” 快速跳转
评论