# Node模块加载规则

user/work/test/test1/test2/index.js文件内容var glob = require('glob'),node 查找glob模块的顺序

  1. 是否有缓存

  2. 是否是node的模块

  3. user/work/test/test1/test2/node_modulesglob.js,停止查找

  4. 如果有user/work/test/test1/test2/node_modules/glob文件夹,并且有package.json,并且package.json文件内部的mian指定了具体文件路径,则使用mian字段提供的路径,停止查找

{
    "main":"./lib/glob.js"
}
1
2
3
  1. user/work/test/test1/test2/node_modules/globpackage.json 并且有user/work/test/test1/test2/node_modules/glob/index.js,则停止查找

  2. 没有user/work/test/test1/test2/node_modules/glob,则回退到user/work/test/test1/node_modules。执行步骤3-5

# 参考文章

  1. https://nodejs.org/api/modules.html#modules_all_together

  2. http://nodejs.cn/api/modules.html#modules_all_together

  3. http://nodejs.cn/api/modules.html#modules_loading_from_node_modules_folders