Webpack 加载模块的规则

Webpack 支持 CommonJS 规范 定义的加载规则。

加载规则

路径以 ... 打头,加载相对路径的模块。. 表示当前目录,.. 表示上层目录。 require('./foo.js') 将加载当前文件所在目录的 foo.js 的文件。

路径以 / 打头,加载绝对路径的模块。如 require('/xx/foo.js') 将加载文件路径是 /xx/foo.js 的文件。不建议用这种模式来加载模块。

路径不以上面的内容打头。则会这样查找:

  1. Node.js 的原生模块。如 fshttp 等。(注:在浏览器环境中不存在这些模块。)
  2. 在 Webpack 中的配置的目录或模块的别名。
  3. 当前文件目录的 node_modules
  4. 上层目录的 node_modules
  5. 直至项目根目录下的 node_modules 目录。

注:具体的查找顺序可能不正确,网上没找到相应的文档。有知道的麻烦告知。

补全规则

在查找的过程中,会尝试补文件拓展名和路径。

补文件拓展名

如果加载的路径不带文件拓展名,会尝试补 .js, .json 等文件拓展名。在 Webpack 中可配置会尝试补的拓展名。配置方法如下:

resolve: {
  extensions: ['.js', '.vue', '.json']
  ...
}

require('./config'),会尝试加载 config.js, config.vue, config.json

补路径

在尝试补文件拓展名后,仍然没找到对应文件,但发现路径是目录,会找该目录下的 package.json。如果存在,则加载 package.json 中的 main 属性对应的文件。如果不存在,则尝试找目录下的 index.jsindex.json 等。

推荐阅读

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏NetCore

微信快速开发框架(三)-- 建立微信公众平台测试账号

为了测试我的快速微信开发框架,建议大家可以申请一个测试账号进行测试,稍后我也会开一个微信公众账号(不过目前很麻烦,还要我手拿身份证拍照,囧!) 第一步:您要有一...

25090
来自专栏从流域到海域

Vue.js项目目录结构

folder/flie 说明 bulid 最终生成代码存放位置。 config 配置目录,存放配置文件。index.js中存放了环境和端口等配置...

37450
来自专栏Hongten

Linux 学习_mysql

下载地址:http://mysql.mirror.kangaroot.net/Downloads/MySQL-4.1/mysql-standard-4.1.21...

13420
来自专栏前端那些事

nvm管理不同版本的node和npm

写在前面 nvm(nodejs version manager)是nodejs的管理工具,如果你需要快速更新node版本,并且不覆盖之前的版本;或者想要在不同的...

30680
来自专栏cnblogs

hexo配置自己的博客站点

最近业余时间利用hexo为自己搭建一个高度自定义的个人站点,站点发布在github上,访问地址为:https://cqhaibin.github.io/。本博客...

23070
来自专栏散尽浮华

linux下core file size设置笔记

现象说明:突然发现一台测试机器的java程序莫名其妙地没了,但是没有core dump!这就需要打开服务器的core文件生成的功能了,(即core dump文件...

568100
来自专栏Bug生活2048

Spring Boot学习笔记(三)IDEA 下配置Git

然后需要安装git,点击下面地址进行下载,具体安装步骤请参考其他网上文章,不过多描述。

17710
来自专栏Angular&服务

ionic2 常用命令行

比如我们通过命令行创建一个页面。 ionic g page myPage 之后就会生成如下三个文件:

9830
来自专栏自由而无用的灵魂的碎碎念

针对toad的schema brower和plsql developer的对象浏览器的一些分析

以前做JAVA开发时,一直用的都是plsql developer,搜索对象(表、触发器、DB_LINKS、同义词、序列)都是使用的对象浏览器:

9120
来自专栏武军超python专栏

2018年8月1日linux中文件管理中各个文件名称的释义

unix/linux文件管理方式: /           unix/linux根目录,unix/linux中所有的设备、文件都存放在这个目录下 /sbin...

9430

扫码关注云+社区

领取腾讯云代金券