We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
npm 是 Node 的模块管理器,功能极其强大。它是 Node 获得成功的重要原因之一。
本文参考壹题和阮一峰的博客
首层依赖,从package.json中获取,即dependencies / devDependencies属性,根据首层依赖分别逐级获取各个模块的依赖,得到依赖树
package.json
dependencies / devDependencies
依赖树中可能存在大量重复模块,例如A、B两模块都依赖了C。npm中加入了dedupe过程,会遍历依赖树的所有节点,都加到根节点上,同时会处理和处理重复模块。
重复模块:指的是模块名相同且 semver 兼容。每个 semver 都对应一段版本允许范围,如果两个模块的版本允许范围存在交集,那么就可以得到一个兼容版本。
如果不存在兼容版本,则会分别安装两个版本的依赖,以moduleC@version1和moduleC@version2的形式都保存到依赖树中,下载并安装。
moduleC@version1
moduleC@version2
本节参考掘金博客
版本号一般有三个部分,以.隔开,就像X.Y.Z,其中
.
X.Y.Z
每个部分为整数(>=0),按照递增的规则改变。 在修订版本号的后面可以加上其他信息,用-连接,比如:
X.Y.Z-Alpha
X.Y.Z-Beta
X.Y.Z-Stable
npm依赖项支持一定范围内的版本。分别用^ / ~ / x / -等符号表示:
^ / ~ / x / -
^
^15.6.1 = [15.6.1, 15.9.999]
~
~15.6.1 = [15.6.1, 15.6.999]
x
15.x = [15.0, 16.0)
-
0.1.0 - 2= [0.1.0, 2.999.999]
preinstall、install、postinstall、prepublish、prepare等
The text was updated successfully, but these errors were encountered:
基于libuv实现。对比浏览器中的事件循环,可以看这里
socket.on('close', ...)
Node 10以前:
Node 11以后:与浏览器一致,即每执行一个宏任务就执行完微任务队列。
Sorry, something went wrong.
No branches or pull requests
NPM
npm 是 Node 的模块管理器,功能极其强大。它是 Node 获得成功的重要原因之一。
npm install 安装过程
安装机制概述
获取依赖模块
首层依赖和依赖树
首层依赖,从
package.json
中获取,即dependencies / devDependencies
属性,根据首层依赖分别逐级获取各个模块的依赖,得到依赖树模块扁平化
依赖树中可能存在大量重复模块,例如A、B两模块都依赖了C。npm中加入了dedupe过程,会遍历依赖树的所有节点,都加到根节点上,同时会处理和处理重复模块。
重复模块:指的是模块名相同且 semver 兼容。每个 semver 都对应一段版本允许范围,如果两个模块的版本允许范围存在交集,那么就可以得到一个兼容版本。
如果不存在兼容版本,则会分别安装两个版本的依赖,以
moduleC@version1
和moduleC@version2
的形式都保存到依赖树中,下载并安装。npm semver
版本号一般有三个部分,以
.
隔开,就像X.Y.Z
,其中每个部分为整数(>=0),按照递增的规则改变。
在修订版本号的后面可以加上其他信息,用-连接,比如:
X.Y.Z-Alpha
: 内测版X.Y.Z-Beta
: 公测版X.Y.Z-Stable
: 稳定版npm依赖项支持一定范围内的版本。分别用
^ / ~ / x / -
等符号表示:^
: 匹配大于X.Y.Z
的更新Y、Z的版本号,例如^15.6.1 = [15.6.1, 15.9.999]
~
: 匹配大于X.Y.Z
的更新Z的版本号,例如~15.6.1 = [15.6.1, 15.6.999]
x
: 可以替代X、Y、Z中任意一个,表示该位置可更新,例如15.x = [15.0, 16.0)
-
: 包含第一个版本号和第二个版本号的范围,表示的是一个闭区间,例如0.1.0 - 2= [0.1.0, 2.999.999]
npm生命周期
preinstall、install、postinstall、prepublish、prepare等
The text was updated successfully, but these errors were encountered: