我们离发 npm 包还有多远
基础准备
我们先来熟悉几个概念 node_modules、 package-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
需要注意的是,并不是所有的子依赖都有 dependencies 属性,只有子依赖的依赖和当前已安装在根目录的 node_modules 中的依赖冲突之后,才会有这个属性。
依赖的区别与使用场景 dependencies 和 devDependencies 最大的区别在打包运行时, 执行 npm install 时 默认会把所有依赖全部安转, npm install --production 时就只会安装 dependencies 中的依赖.
该干什么
该怎么装逼
最后更新于
这有帮助吗?