我读到的所有文件都谈到了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