做的网站缩小内容就全乱了,网页制作基础考什么,长沙优化网站服务,自己做众筹网站npm 最初的npm只是简单的通过依赖去递归安装包#xff0c;所以说每个依赖都会有自己的node_modules,node_modules是嵌套的。一个项目会存在多个包#xff0c;多个包之间难免会有公共的依赖#xff0c;node_modules嵌套的话#xff0c;这样公共依赖就会下载多次。会造成磁盘…npm 最初的npm只是简单的通过依赖去递归安装包所以说每个依赖都会有自己的node_modules,node_modules是嵌套的。一个项目会存在多个包多个包之间难免会有公共的依赖node_modules嵌套的话这样公共依赖就会下载多次。会造成磁盘空间的浪费较长的下载时间文件路径过长windows文件路径最长是260多个字符嵌套可能会超过其长度限制)
对于上述的缺点在后面的版本效仿yarn的方式进行了解决
优点官方支持社区庞大 Yarn
Yarn通过扁平化node_modules同一个包不同版本还是会嵌套下载。一个包是有多个版本的只能提升一个)解决了公共依赖重复下载和文件路径过长的问题。还实现了yarn.lock来锁定版本。版本提升会照成幽灵依赖是 项目里使用了但是未在项目的package.json 中定义的包
优点并行下载安装速度快会缓存包将包进行全局安装所以支持离线模式从全局安装的包里面深拷贝到当前项目区别于新的npm pnpm
当使用 npm 或者yarn时如果你有 100 个项目并且所有项目都有一个相同的依赖包那么 你在硬盘上就需要保存 100 份该相同依赖包的副本yarn拷贝了缓存的包。如果是使用 pnpm依赖包将被 存放在一个统一的位置全局安装如果你对同一依赖包需要使用不同的版本则仅有 版本之间不同的文件会被存储起来。 扁平化的node_modules存在三个个问题: 模块可以访问它们不依赖的包;展开依赖关系树算法是相当复杂的;对于包的不同版本只能提升一个还是会存在嵌套的node_modules;
pnpm对于包是全局安装每个项目的 node_modules 通过链接的形式将包链接到资源仓库中这样不仅节省了空间同时也加快了安装速度。
pnpm最大的优点就是保留了非扁平化的node_modules 文件夹通过链接指向包资源的存储地。
ppm add axios,在node_modules下存在一个.pnpm的包是硬连接指向包的磁盘地址node_modules第一层还有一个axios他里面也有node_modules是软连接指向.pnpm硬连接就是同一个文件的不同引用而软链接是新建一个文件文件内容指向另一个路径ps:路径过长的限制本质上是不能有太深的目录层级现在都是各个位置的目录的 link并不是同一个目录所以也不会有长度限制
使用链接的指向替代了yarn的复制npm的下载明显速度快了很多也更加节省了磁盘空间同时也存在一个问题如果你在一个项目内修改了一个包那么其他依赖这个包的项目也会收到影响