package-lock.json和yarn.lock的包依赖区别

node包管理

包是一段可以复用的代码,这段代码可以从全局注册表下载到开发者的本地环境。每个包可能会,也可能不会依赖于别的包。简单地说,包管理器是一段代码,它可以让你管理依赖(你或者他人写的外部代码),你的项目需要这些依赖来正确运行。

为啥我们需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。

更重要的是,如果我们要使用模块A,而模块A又依赖于模块B,模块B又依赖于模块C和模块D,npm可以根据依赖关系,把所有依赖的包都下载下来并管理起来。否则,靠我们自己手动管理,肯定既麻烦又容易出错。

于是一个集中管理的工具应运而生:

  1. 大家都把自己开发的模块打包后放到npm官网上,如果要使用,直接通过npm安装就可以直接用,不用管代码存在哪,应该从哪下载。
  2. Yarn 是为了弥补npm 的一些缺陷[速度慢,稳定性高]而出现的。”

npm

npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包( package) (即,代码模块)。来自各大洲的开源软件开发者使用 npm 互相分享和借鉴。包的结构使您能够轻松跟踪依赖项和版本。

下面是关于 npm 的快速介绍:npm 由三个独立的部分组成:

  • 网站
    网站 是开发者查找包(package)、设置参数以及管理 npm 使用体验的主要途径。
  • 注册表(registry
    注册表 是一个巨大的数据库,保存了每个包(package)的信息。
  • 命令行工具 (CLI)
    CLI 通过命令行或终端运行。开发者通过 CLI 与 npm 打交道。

yarn

Yarn发布于2016年10月,并在Github上迅速拥有了2.4万个Star。而npm只有1.2万个star。这个项目由一些高级开发人员维护,包括了Sebastian McKenzie(Babel.js)和Yehuda Katz(Ember.js、Rust、Bundler等)。

Yarn一开始的主要目标是解决上一节中描述的由于语义版本控制而导致的npm安装的不确定性问题。虽然可以使用 npm shrinkwrap来实现可预测的依赖关系树,但它并不是默认选项,而是取决于所有的开发人员知道并且启用这个选项。
Yarn采取了不同的做法。每个 yarn安装都会生成一个类似于 npm-shrinkwrap.jsonyarn.lock文件,而且它是默认创建的。除了常规信息之外࿰

你可能感兴趣的:(json,javascript,运维,ViewUI)