我们离发 npm 包还有多远

基础准备

我们先来熟悉几个概念 node_modulespackage-lock.json.

npm 的版本号格式代表的意思吗, 基本遵守 semver 语义化版本号的规则, 使用 node-semver 来解析版本号

MAJOR.MINOR.PATCH

MAJOR 表示主版本号,MINOR 表示次版本号,PATCH 表示修订号。

npm2 和 npm3 的版本变更中实现了目录打平.

​ 为了解决以上问题,npm 3 的 node_modules 目录改成了更为扁平状的层级结构,尽量把依赖以及依赖的依赖平铺在 node_modules 文件夹下共享使用。

npm2 遇到的嵌套层级深, npm 3 则是依赖树改变

如何升级版本号 升级版本号的规则主要有三个:

主版本号:当你做了不兼容的 API 修改 次版本号:当你做了向下兼容的功能性新增 修订号:当你做了向下兼容的问题修正

^version

兼容某个版本

版本号中最左边的非0数字的右侧可以任意

如果缺少某个版本号,则这个版本号的位置可以任意

如:^1.1.2 ,表示>=1.1.2 <2.0.0,可以是1.1.2,1.1.3,.....,1.1.n,1.2.n,.....,1.n.n

如:^0.2.3 ,表示>=0.2.3 <0.3.0,可以是0.2.3,0.2.4,.....,0.2.n

如:^0.0,表示 >=0.0.0 <0.1.0,可以是0.0.0,0.0.1,.....,0.0.n

~version

表示同一主版本号和次版本号中,不小于指定版本号的版本号。 大概匹配某个版本

如果minor版本号指定了,那么minor版本号不变,而patch版本号任意

如果minor和patch版本号未指定,那么minor和patch版本号任意

如:~1.1.2,表示>=1.1.2 <1.2.0,可以是1.1.2,1.1.3,1.1.4,.....,1.1.n

如:~1.1,表示>=1.1.0 <1.2.0,可以是同上

如:~1,表示>=1.0.0 <2.0.0,可以是1.0.0,1.0.1,1.0.2,.....,1.0.n,1.1.n,1.2.n,.....,1.n.n

package-lock.json 的不足之处 为了解决上述问题以及 npm 3 的问题,在 npm 5.0 版本后,npm install 后都会自动生成一个 package-lock.json 文件 ,当包中有 package-lock.json 文件时,npm install 执行时,如果 package.json 和 package-lock.json 中的版本兼容,会根据 package-lock.json 中的版本下载;如果不兼容,将会根据 package.json 的版本,更新 package-lock.json 中的版本,已保证 package-lock.json 中的版本兼容 package.json。

package-lock-json

version :包版本,即这个包当前安装在 node_modules 中的版本
resolved :包具体的安装来源
integrity :包 hash 值,验证已安装的软件包是否被改动过、是否已失效
requires :对应子依赖的依赖,与子依赖的 package.json 中 dependencies 的依赖项相同
dependencies :结构和外层的 dependencies 结构相同,存储安装在子依赖 node_modules 中的依赖包

需要注意的是,并不是所有的子依赖都有 dependencies 属性,只有子依赖的依赖和当前已安装在根目录的 node_modules 中的依赖冲突之后,才会有这个属性。

依赖的区别与使用场景 dependencies 和 devDependencies 最大的区别在打包运行时, 执行 npm install 时 默认会把所有依赖全部安转, npm install --production 时就只会安装 dependencies 中的依赖.

该干什么

该怎么装逼

最后更新于

这有帮助吗?