require.context
你可以通过 require.context() 函数来创建自己的context。
可以给这个函数传入三个参数:一个要搜索的目录,一个标记表示是否还搜索其子目录, 以及一个匹配文件的正则表达式。
webpack 会在构建中解析代码中的 require.context() 。
语法如下:
require.context(directory, useSubdirectories = false, regExp = /^.//);
示例:
-
require.context('./test', false, /.test.js$/); // (创建出)一个 context,其中文件来自 test 目录,request 以 `.test.js` 结尾。
-
require.context('../', true, /.stories.js$/); // (创建出)一个 context,其中所有文件都来自父文件夹及其所有子级文件夹,request 以 `.stories.js` 结尾。
context module API
一个 context module会导出一个(require)函数,此函数可以接收一个参数:request。
此导出函数有三个属性:resolve, keys, id。
-
resolve 是一个函数,它返回 request 被解析后得到的模块 id。
-
keys 也是一个函数,它返回一个数组,由所有可能被此 context module 处理的请求
const cache = {};
function importAll (r) {
r.keys().forEach(key => cache[key] = r(key));
}
importAll(require.context('../components/', true, /.js$/));