国外建站用什么最多,上海做一个公司网站多少钱,惠州网站建设兼职,网站建设维护的知识在执行npm install 的时候发生了什么#xff1f; 首先安装的依赖都会存放在根目录的node_modules,默认采用扁平化的方式安装#xff0c;并且排序规则.bin第一个然后系列#xff0c;再然后按照首字母排序abcd等#xff0c;并且使用的算法是广度优先遍历#xff0c;在遍历依…在执行npm install 的时候发生了什么 首先安装的依赖都会存放在根目录的node_modules,默认采用扁平化的方式安装并且排序规则.bin第一个然后系列再然后按照首字母排序abcd等并且使用的算法是广度优先遍历在遍历依赖树时npm会首先处理项目根目录下的依赖然后逐层处理每个依赖包的依赖直到所有依赖都被处理完毕。在处理每个依赖时npm会检查该依赖的版本号是否符合依赖树中其他依赖的版本要求如果不符合则会尝试安装适合的版本 扁平化
扁平化只是理想状态如下 安装某个二级模块时若发现第一层级有相同名称相同版本的模块便直接复用那个模块
因为A模块下的C模块被安装到了第一级这使得B模块能够复用处在同一级下且名称版本均相同的C模块
非理想状态下 因为B和A所要求的依赖模块不同B下要求是v2.0的CA下要求是v1.0的C 所以B不能像2中那样复用A下的C v1.0模块 所以如果这种情况还是会出现模块冗余的情况他就会给B继续搞一层node_modules就是非扁平化了。
npm install 后续流程 具体过程看图就可以了很详细
至于npmrc可以配置什么给大家一个demo参考
registryhttp://registry.npmjs.org/
# 定义npm的registry即npm的包下载源proxyhttp://proxy.example.com:8080/
# 定义npm的代理服务器用于访问网络https-proxyhttp://proxy.example.com:8080/
# 定义npm的https代理服务器用于访问网络strict-ssltrue
# 是否在SSL证书验证错误时退出cafile/path/to/cafile.pem
# 定义自定义CA证书文件的路径user-agentnpm/{npm-version} node/{node-version} {platform}
# 自定义请求头中的User-Agentsavetrue
# 安装包时是否自动保存到package.json的dependencies中save-devtrue
# 安装包时是否自动保存到package.json的devDependencies中save-exacttrue
# 安装包时是否精确保存版本号engine-stricttrue
# 是否在安装时检查依赖的node和npm版本是否符合要求scripts-prepend-node-pathtrue
# 是否在运行脚本时自动将node的路径添加到PATH环境变量中package-lock.json 的作用
很多朋友只知道这个东西可以锁定版本记录依赖树详细信息
version 该参数指定了当前包的版本号resolved 该参数指定了当前包的下载地址integrity 用于验证包的完整性dev 该参数指定了当前包是一个开发依赖包bin 该参数指定了当前包中可执行文件的路径和名称engines 该参数指定了当前包所依赖的Node.js版本范围
知识点来了package-lock.json 帮我们做了缓存他会通过 name version integrity 信息生成一个唯一的key这个key能找到对应的index-v5 下的缓存记录 也就是npm cache 文件夹下的 如果发现有缓存记录就会找到tar包的hash值然后将对应的二进制文件解压到node_modeules