npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代码模块)。来自各大洲的开源软件开发者使用 npm 互相分享和借鉴。包的结构使您能够轻松跟踪依赖项和版本。并且是 Node.js 平台的默认包管理工具。通过 npm 可以安装、共享、分发代码,管理项目依赖关系。
Yarn 对你的代码来说是一个包管理器, 你可以通过它使用全世界开发者的代码, 或者分享自己的代码。Yarn 做这些快捷、安全、可靠,所以你不用担心什么。
通过Yarn你可以使用其他开发者针对不同问题的解决方案,使自己的开发过程更简单。 使用过程中遇到问题,你可以将其上报或者贡献解决方案。一旦问题被修复, Yarn会更新保持同步。
代码通过 包(package) (或者称为 模块(module)) 的方式来共享。 一个包里包含所有需要共享的代码,以及描述包信息的文件,称为 package.json 。
npm 5.0 版本之后,npm install 后都会有一个 package-lock.json。这是因为原来 package.json 文件只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本,你每次 npm install 都是拉取的该大版本下的最新的版本,为了稳定性考虑我们几乎是不敢随意升级依赖包的,这将导致多出来很多工作量,测试/适配等,所以 package-lock.json 文件出来了,当你每次安装一个依赖的时候就锁定在你安装的这个版本。
pakage-lock.json 文件有如下作用:
锁定安装时的包的版本号,需要上传到 git/svn,保证大家的依赖包一致。
package-lock.json 是在 `npm install` 时候生成一份文件,用来记录当前状态下实际安装的各个 npm package 的具体来源和版本号。
Yarn 在运行时会创建一个 yarn.lock 文件用来保存所安装的依赖包的确切版本。作用如下:
yarn.lock 文件会锁定你安装的每个依赖项的确切版本,这可以确保你不会意外获得不良依赖。如:以前是1.2.1,执行 yarn 后,变为 1.2.2
避免由于开发人员意外更改或者更新版本,而导致项目不兼容等问题
package.json文件:该文件用来保存项目的依赖,并不能指定到某一个具体的依赖。yarn 和 npm 均使用该文件去安装依赖。
package-lock.json 文件:npm 安装项目依赖时记录实际依赖版本信息,下次可以通过该文件去下载依赖,保证项目每次下载的依赖版本完全一致。
yarn.lock 文件:yarn 安装项目依赖时记录实际依赖版本信息,下次可以通过该文件去下载依赖,保证项目每次下载的依赖版本完全一致。