一:package.json、node_modules、package-lock.json是什么?
-
package.json里面定义的是版本范围(比如^1.0.0),具体跑npm install的时候安的什么版本,要解析后才能决定,这里面定义的依赖关系树,可以称之为逻辑树(logical tree)。产生背景:在拷贝项目时不需要拷贝node_modules文件夹,如果拷贝的话会很慢,那么如何解决安装的依赖与原项目依赖及版本保持一致呢?①package.json项目描述文件,保存在项目的根目录下面,记录了当前的项目信息,用npm init -y命令生成。②拷贝项目后,直接执行npm install会自动安装package.json 文件中记录的依赖。
-
node_modules文件夹下才是npm实际安装的确定版本的东西,这里面的文件夹结构我们可以称之为物理树(physical tree)。node_modules文件夹中存放许多的模块文件及插件。安装过程中有一些去重算法,所以你会发现逻辑树结构和物理树结构不完全一样。
-
package-lock.json可以理解成对结合了逻辑树和物理树的一个快照(snapshot),里面有明确的各依赖版本号,实际安装的结构,也有逻辑树的结构。其作用:①记录模块与模块之间的依赖关系 ②锁定包的版本 ③记录项目所依赖第三方包的树状结构和包的下载地址,加快重新安装的下载速度。