NodeJS模块解析摘要

时间:2018-02-03 06:26:11

标签: node.js module

我读到的所有文件都谈到了Node.js将依赖模块寻找的顺序,但是,没有人谈论选择的顺序他们(模块分辨率)。即,

Node.js是从搜索/找到的列表中选择第一个模块,还是 last ?如果找到相同模块的不同版本怎么办?

另外,我在哪里可以找到Node.js在哪里寻找依赖模块的摘要,即其搜索顺序的完整列表?甚至 https://nodejs.org/api/modules.html#modules_all_together并未将它们全部列在一起。 THX

PS,

回答"有人可能会问为什么你会在它搜索的地方有重复的命名模块?无论如何,这似乎是一种混淆的方法" ...看看这个:

$ du -csm * 
1       config.json
1       handler.js
1       launch.sh
1       LICENSE
1       mailgun.js
1       main.js
352     node_modules
1       package.json
1       package-lock.json
1       README.md
1       reloader.js
1       support.js
1       test
352     total

$ mv node_modules .. 

$ du -csk * 
4       config.json
4       handler.js
4       launch.sh
4       LICENSE
4       mailgun.js
4       main.js
4       package.json
100     package-lock.json
4       README.md
4       reloader.js
8       support.js
28      test
184     total

所以答案是,正如Aluan Haddad所说,"大多数人似乎并不关心,答案很重要" 。即,让我为你拼出来:

  • 如果没有node_modules文件夹,我自己的文件小于200K,在200K内,package-lock.json 单独为100K。即,即使没有node_modules,开销已经 120%
  • 使用node_modules文件夹,开销将高达 176000%,计算200K代码库,如果使用100K,那么该百分比需要加倍< /强>

&#34;大多数人似乎并不关心&#34; ,叹息。 为什么我关心?因为我将基于相同的节点模块编写一堆类似的项目,而且我不会抛出所有176000%开销在这些地方。我知道大多数人不会面对如此极端的情况,但你为什么要关心?如果你需要编写多个express项目,那么你应该关心。

这个问题的答案是答案的基础,如果不同的项目需要基于不同版本的express (例如,express4.x和express3.x等)会怎么样? 。当然,有些人只是不在乎

PPS,

前几天我正在阅读interesting article,这是在我进入JS / NodeJS业务之前,我鼓励每个NodeJS开发人员阅读它,并考虑一下"GitHub Cancer"现象背后的深层原因。

PPPS,

正在阅读另一篇有趣的文章,我无法抗拒在这里分享它 -

What’s really wrong with node_modules and why this is your fault

enter image description here

0 个答案:

没有答案