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 字段。