npm i 简单原理

一、npm2

采用递归模式,根据dependencies 和devdependencies 属性中指定的包来确定第一层依赖。再根据第一层的子依赖,递归安装各个包到子依赖的 node_modules 中,直到子依赖不再依赖其他模块。类似:

二、npm3

node_modules 目录改成了更为扁平状的层级结构,尽量把依赖和子依赖都在一个目录下共享,如若出现子依赖的版本号不同的情况,采用npm2d的模式,。如:



 

 三、package-lock.json

npm5.0后会自动生成package-lock.json文件锁定所有模块的版本号,包括主模块和所有依赖子模块.npm install时从package.json中读取模块名称,从package-lock.json中读取对应的版本号,本地的模块版本更新会同步更新package-lock.json中的版本号

附:当package.json与package-lock.json都不存在,执行"npm install"时,node会重新生成package-lock.json文件,然后把node_modules中的模块信息全部记入package-lock.json文件,但不会生成package.json文件,此时,你可以通过"npm init --yes"来初始化生成package.json文件。

四、dependencies和devDependencies

dependencies:无论在开发环境还是在生产环境都必须使用的依赖,通过 npm install 或者npm install XXX --save 下载的包都会默认安装在 dependencies 对象

devDependencies:指可以在开发环境使用的依赖,通过 npm install 包名--save-dev 下载的包都会在devDependencies 对象中;

两者 最大的区别是在打包运行时,执行 npm install 时默认会把所有依赖全部安装,但是如果使用 npm install --production 时就只会安装 dependencies 中的依赖,如果是 node 服务项目,就可以采用这样的方式用于服务运行时安装和打包,减少包大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值