Javascript React库如何直接要求其源库?

Javascript React库如何直接要求其源库?,javascript,reactjs,commonjs,Javascript,Reactjs,Commonjs,我浏览了Facebook的React的源代码,发现在整个项目源代码中,他们没有指定加载自己模块的相对路径。例如,库使用var foo=require('../bar/foobar')而不是执行var foo=require('foobar'),就好像模块已加载到node\u模块中,以便CommonJS读取一样 我只是想知道他们是怎么做到的?我试着通过Grunt查看他们的构建步骤,但看不到任何直接实现这一点的包 对于我所说的技术的一个更具体的例子,库调用存在于中的flattchildren模块,而

我浏览了Facebook的React的源代码,发现在整个项目源代码中,他们没有指定加载自己模块的相对路径。例如,库使用
var foo=require('../bar/foobar')
而不是执行
var foo=require('foobar')
,就好像模块已加载到
node\u模块中,以便CommonJS读取一样

我只是想知道他们是怎么做到的?我试着通过Grunt查看他们的构建步骤,但看不到任何直接实现这一点的包

对于我所说的技术的一个更具体的例子,库调用存在于中的
flattchildren
模块,而不指定路径。

React使用一个名为的工具。其配置与如下所示的行相匹配:

* @providesModule ReactChildReconciler
To
require('ReactChildReconciler')
调用。它们还将所有内容放在一个目录中,因此路径最终为
require('./ReactChildReconciler')

源代码是以结构化的方式组织的,但模块名称在全球范围内是repo所独有的(我认为facebook的所有内部代码) [需要引用]。这意味着它指向的内容没有歧义


在这个主题上,react的代码中还有其他一些神奇的东西

不变量(断言、解释等)
的调用和类似的
警告
调用通过删除第一个调用后的参数进行转换,以节省空间。警告调用被完全剥离,因为它们被包装在下一个魔法中:仅开发块

if (__DEV__) {
   ...
}
其汇编目的是:

if (process.env.NODE_ENV !== 'production') {
   ...
}
它通过envify编译成这样(在开发中),代码运行:

if ('development' !== 'production') {
   ...
}
在生产过程中:

if ('production' !== 'production') {
   ...
}
它缩小到:

我说“嘿,解释也被打断了。。哦“