一个扁平化npm包的方案
发布于 5 年前 作者 spitWind 2256 次浏览 来自 分享

Require function added #23948 憋脚的英文, 很难说明白… .优先在"moduleLocation" 中定义的包的路径查找依赖,
若是找不到相关的依赖包 ,则到全局下面查找相关的包,
然后再到 node_module 下去查找,(原先的node包查找机制)
如在跟目录下执行require(“ws”) , ///package.json

{
  "name": "xxxxx",
  "version": "1.0.5",
  "description": "必须读取package.json才知道包的入口main 位置, moduleLocation 方便自由放置依赖文件的位置,依赖文件可以复用,而不需要拷贝文件",
  "main": "index.js",
  "moduleLocation": {
    "ws": "/dev/module/ws1.0",
    "express": "/dev/module/ws"
  }
}

查找到当前 ws 包的路径在 “/dev/module/ws1.0" 则变成require("/dev/module/ws1.0") 继而 查找
”/dev/module/ws1.0/package.json" 的main:“index.js" 并开始执行”/dev/module/ws1.0/index.js"

,并不会引起参考包位置的不确定。。这将有助于依赖处理和包管理,

  1. ,原“require”查找包将在许多文件位置中查找。如我上图: qq 20181102211331

在最深的路径 下执行require("object-assign") 将会依次 查找"…/node_module/object-assign","…/…/node_module/object-assign" , 随着包数目的加多将会导致io 的消耗

如果您可以从同一级别“./node_module” 将可以 快速找到依赖包, 如上 利用package.json定义 moduleLocation 来确定依赖 ,也可以处理多个版本包依赖的问题 ,

我尽力把意思表示清楚,坐等翻译出现,…
@Trott @benjamingr

回到顶部