nodejs 对 npm 支持非常良好
-
当使用 nodejs 导入模块时,如果模块路径不是以 ./ 或 …/ 开头,则 node 会认为导入的模块来自于 node_modules 目录,例如:
var _ = require("lodash");
-
它首先会从当前目录的以下位置寻找文件
node_modules/lodash.js node_modules/lodash/入口文件
-
若当前目录没有这样的文件,则会回溯到上级目录按照同样的方式查找
-
如果到顶级目录都无法找到文件,则抛出错误
入口文件规则
-
查看导入包的 package.json 文件,读取 main 字段作为入口文件;
-
若不包含 main 字段,则使用 index.js 作为入口文件;
入口文件的规则同样适用于自己工程中的模块;
在 node 中,还可以手动指定路径来导入相应的文件,这种情况比较少见;
npm 缓存相关命令
# 清除缓存
npm cache clean -f
# 获取缓存位置
npm config get cache
# 设置缓存位置
npm config set cache "新的缓存路径"
面试题
解释一下 npm 模块安装机制是什么?
参考答案:
- npm 会检查本地的 node_modules 目录中是否已经安装过该模块,如果已经安装,则不再重新安装;
- npm 检查缓存中是否有相同的模块,如果有,直接从缓存中读取安装;
- 如果本地和缓存中均不存在,npm 会从 registry 指定的地址下载安装包,然后将其写入到本地的 node_modules 目录中,同时缓存起来;
npm👉 包的配置
上一篇