npm 和 yarn

npm 是 Node.js 的包管理工具,Node.js package manger,包就是别人写的 Node.js 模块。我们通过 npm,可以方便的使用第三方开发的开源模块,同时也可以把自己的模块发布到 npm 供其它开发者使用。

在初始化 Node.js 项目的时候我们需要通过 npm init 命令,把自己的代码初始化成为 npm 包,这样我们才能更加方便地去使用别人的 npm 包。

npm 通过 Node.js 模块根目录的 package.json 文件获取模块元数据和依赖关系等。

yarn 是由 Facebook、Google、Exponent 和 Tilde 为了解决当时 npm 的一些缺陷而新推出的包管理工具。当时 npm 有以下问题:

1.速度慢:npm 按照队列执行安装每个 package,只有当前 package 安装完成之后,才会进行后面的安装。

2.同一个项目,npm 安装的时候无法保持一致性,由于 package.json 文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义:

"5.0.3",  //安装指定的5.0.3版本

"~5.0.3", //安装5.0.X中的最新版本

"^5.0.3"  //安装5.X.X中的最新版本

3.npm 安装的时候,一个包抛出错误,npm 会继续下载安装包,而且因为 npm 会把所有的日志输出到终端,有关错误包的错误信息就会淹没在 npm 打印的警告中,你甚至不会发现错误的产生。

不过现在两个差异不大,可根据喜好选择。

Yarn 和 npm 命令对比:

npm install (npm i)        === yarn

npm install xxx            === yarn add xxx

npm uninstall xxx          === yarn remove xxx

npm install xxx --dev      === yarn add xxx --dev

npm install xxx --global    === yarn global add xxx

npm update                  === yarn upgrade

全局安装与本地安装

全局安装:全局安装的包提供可以直接执行的命令。比如全局安装 http-server:

yarn global add http-server

之后便可以全局使用 http-server 命令:

原理:全局安装的 http-server 会将其 package.json 中的 bin 命令注入全局环境,使其可以全局执行

本地安装

一个包通常会在不同的项目上重复用到,如果只是全局安装,那么当某个项目需要更新包的版本的时候,可能会影响其他项目。因此我们需要本地安装,来避免全局安装产生的包污染问题。

本地安装有两种方式:

yarn add xxx

yarn add xxx --dev

前者安装项目本身需要用到的依赖,参与上线打包,存储在 package.json 文件中的 "dependencies" 配置下;

后者安装项目仅在本地开发使用到的依赖,不参与上线打包,存储在 package.json 文件中的 "devDependencies" 配置下。(如 @types/node,以获取 node.js 更加友好的代码提示)

语义化版本号

x.y.z

z:修复 bug

y:增加新特性,保证兼容

x:大版本更新,不保证兼容

什么是 npx?

在创建 React 应用的时候,官网给出的命令是:

npxcreate-react-appmy-app

其中 npx 可以让你在没有全局安装 create-react-app 这个包的情况下使用 create-react-app 命令。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容