Javascript 何时在NPM上使用纱线?有什么区别?
和NPM之间有什么区别? 在写这个问题的时候,我只能在互联网上找到一些文章,展示NPM命令的纱线等值是什么 它们是否具有相同的功能(我知道Yarn进行本地缓存,看起来您只需要下载一次软件包),但除此之外,从NPM迁移到Yarn还有什么好处?更新:2018年3月(有点晚了…) 从第5版开始,Javascript 何时在NPM上使用纱线?有什么区别?,javascript,npm,yarnpkg,Javascript,Npm,Yarnpkg,和NPM之间有什么区别? 在写这个问题的时候,我只能在互联网上找到一些文章,展示NPM命令的纱线等值是什么 它们是否具有相同的功能(我知道Yarn进行本地缓存,看起来您只需要下载一次软件包),但除此之外,从NPM迁移到Yarn还有什么好处?更新:2018年3月(有点晚了…) 从第5版开始,npm 生成一个名为package lock.json的“lockfile”,该文件修复了整个依赖关系树,就像纱线(或任何其他)锁定机制一样 制作了一个工具 --save现在表示为npm i 更好的网络和缓存
npm
- 生成一个名为
的“lockfile”,该文件修复了整个依赖关系树,就像纱线(或任何其他)锁定机制一样package lock.json
- 制作了一个工具
现在表示为--save
npm i
- 更好的网络和缓存使用率
npm ci
命令,通过仅安装在package lock.json
中找到的包(如果package lock.json
和package.json
未同步,则报告错误),可以在连续集成环境中更快地安装依赖项
就我个人而言,我仍然使用npm
起初的 我不愿意直接引用文档中的内容,但它们很好地解释了原因,足够简洁,以至于我不知道如何进一步总结这些想法 主要是:
npm
不并行的操作,并且- 脱机模式:如果您以前安装过软件包,则无需任何internet连接即可重新安装
- 确定性:无论安装顺序如何,在每台机器上都将以相同的方式安装相同的依赖项
- 网络性能:纱线有效地排队请求,避免请求瀑布,以最大限度地提高网络利用率
- 多注册表:从npm或Bower安装任何软件包,并保持软件包工作流不变
- 网络弹性:单个请求失败不会导致安装失败。请求失败后将重试
- 平面模式:将不匹配的依赖项版本解析为单个版本,以避免创建重复项
- 更多表情符号 当您使用Thread(使用Thread add packagename)安装软件包时,它会将软件包放在磁盘上。在下一次安装期间,将使用此包,而不是发送HTTP请求从注册表获取tarball
Thread附带了一个方便的许可证检查器,如果您必须检查所依赖的所有模块的许可证,它会变得非常强大
如果您使用的是专有软件,那么使用哪种软件并不重要。使用npm,您可以使用npm-shrinkwrap.js,而可以使用THREN.lock和THREN
欲了解更多信息,请阅读以下博客
什么是PNPM?
使用硬链接和符号链接在磁盘上只保存一个版本的模块。例如,当使用npm或Thread时,如果有100个项目使用相同版本的lodash,则磁盘上将有100个lodash副本。使用pnpm,lodash将保存在磁盘上的单个位置,并通过一个硬链接将其放入应安装的节点_模块中 因此,您在磁盘上节省了千兆字节的空间,并且安装速度大大加快!如果您想了解pnpm创建的独特node_模块结构的更多细节,以及为什么它可以与node.js生态系统配合使用,请阅读以下小文章: 如何安装PNPM? 如何使用PNPM安装npm包?pnpm
优于PNPM
和纱线
这里是进度条,显示了NPM
、NPM
和warn
所花费的安装时间(越短越好)PNPM
有关更多详细信息,请访问,尝试为初学者提供更好的概述 npm历来(2010年)是最受欢迎的JavaScript包管理器。如果要使用它管理项目的依赖项,可以键入以下命令:
这将生成一个npm init
文件。它包含项目的所有依赖项 然后 将创建一个目录package.json
,并下载其中的依赖项(您添加到node\u modules
文件) 它还将创建一个package.json
文件。此文件用于描述生成的从属关系树。它允许开发人员执行安装相同的依赖项。例如,您可以想象一个开发人员将依赖项升级到v2,然后升级到v3w包锁.json
pnpm install -g typescript // or your desired package
npm init
npm install