npm,yarn,pnpm

yarn是由Facebook,Google,Exponent,Tilde联合推出的一个新的JS包管理工具,yarn是为了弥补npm的一些缺陷而出现的。

npm的一些坑

(1). npm install 巨慢,特别是新的项目拉下来要等半天,删除node_modules,重新install的时候依旧如此。
(2). 同一个项目安装时无法保证一致性。由于package.json文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义
-"5.0.3" : 表示安装指定的5.0.3版本;
-"~5.0.3" :表示安装新的版本;
-"^5.0.3" :表示安装5.X.X中最新的版本,
这样就麻烦了,常常出现在同一个项目中,有的同事是ok的,有的同事会由于安装的版本不一致出现bug。
(3). 安装的时候,包会在同一时间下载和安装,中途某个时候,一个包抛出错误,但是npm会继续下载和安装包。因为npm会把所有日志输出到终端,有关错误包的信息就会在一大堆npm打印的警告中丢失掉,并且你不会注意到实际发生的错误。
带着而这些坑,开始了yarn的优势及其解决的问题

yarn的优点

(1). 速度快
· 并行安装
· 离线模式
(2). 安装版本统一
(3). 更简洁的输出
(4). 多注册来源处理
(5). 更好的语义化

3. yarn和npm,pnpm核心命令对比

npm yarn pnpm 功能
npm init yarn init pnpm init 初始化项目
npm install xxx --global(-g) yarn global(-g) add xxx pnpm install 全局安装依赖包
npm install yarn install pnpm install 根据package.json安装项目所需的依赖包
npm update --global(-g) yarn global(-g) upgrade pnpm update xxx 全局更新依赖包
npm install --save-dev yarn add xxx --dev pnpm add xxx -D 安装所需的依赖包,并将该包的记录写到package.json文件的 devDependencies 选项中
npm uninstall xxx yarn remove xxx pnpm removexxx 卸载
npm version major yarn version --major 更新依赖包的版本

4. 核心特性与设计理念对比

image.png

5. npm的的未来:npm5.0

有了yarn的压力后,npm做了相应的改进
(1). 默认增加了类似于yarn.lock的package-lock.json
(2). git依赖支持优化:这个特性在需要安装大量内部项目(例如在没有自建源的内网开发),或需要使用某些依赖的未发布版本时很有用。在这之前可能需要使用指定 commit_id 的方式来控制版本。
(3).文件依赖优化:在之前的版本,如果将本地目录作为依赖来安装,将会把文件目录作为副本拷贝到 node_modules 中。而在 npm5 中,将改为使用创建 symlinks 的方式来实现(使用本地 tarball 包除外),而不再执行文件拷贝。这将会提升安装速度。目前yarn还不支持。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容