import 查找内容的过程
-
首先会从本地的
node_modules
文件夹中找到对应工具库所在的文件夹,看是否存在package.json
文件。 -
如果找到了
package.json
:
- 就会先找
module
字段,然后读取对应路径下的文件,查找到此结束。 - 如果没找到
module
字段,就会找main
字段,然后读取对应的路径下的文件,查找到此结束。 - 如果没有
main
字段,就会在文件夹下找index.js
文件,然后读取文件,查找到此结束。 - 如果以上都没找到就会返回异常,扔出
not find
异常。
-
如果不存在
package.json
就会直接找index.js
文件,然后读取文件。 -
查找到此结束!如果还没有就会抛出异常。
关于 module 字段
说到 module
字段就不得不说一个和 webpack
很像的模块打包工具——rollup
。
rollup
是一个轻量级的打包工具,一般被用来打包模块或者库,可以根据需要将模块打包为 es
,commonjs
,AMD
,CMD
,UMD
,IIFE
等规范的模块。
rollup
提出了 module
这个字段,其原因是一般主流的模块或者库都是 commonjs
规范的模块,而 es2015
的模块规范才是 js
的未来,才应该是主流;
所以,一般的 package.json
中的 module
对应的模块为 es
模块,而 main
对应的为 commonjs
模块,webpack
和 rollup
都会默认优先读取 module
字段。