前言
我们在开发工程的时候,有时候,某个文件夹下的文件都需要 import 进来。最常见的就是 svg 图片批量引入,详见上篇文章 封装 svg-icon 组件。当然除此之外,还用于批量引入 js 文件等。
webpack 提供了一些全局方法供用户使用,其中的 require.context()就是用于实现批量引入的,详见 Module Methods | webpack。
用法
// 遍历文件const context = require.context(directory, includeSubDir, regexp);/*directory 是要搜索的目录,includeSubDir 表示是否搜索子目录, regexp 是匹配文件的正则表达式.返回值 context 是一个用于加载模块的函数。调用函数加载模块,但是要传递模块 id。返回值 context 还附带了三个属性:resolve()、id、keys()context.resolve() 会返回给定请求路径的解析后的绝对路径,但并不实际导入模块。它主要用于获取模块的路径信息,而不是模块的内容。context.id 是这个模块的上下文 idcontext.keys() 这个是常用的,返回所有的文件模块 id*/// 一般写法context.keys().forEach(item => context(item));// 简写context.keys().forEach(context);// 拿到返回值的写法context.keys().forEach(item => {const res = context(item);console.log(res.default);})
