webpack require context 说明

426 阅读1分钟

使用require.context 可以动态引入文件

一,使用require

1,完全使用变量 require(variable)

     const filename = ' ./dir/first-level.js';

      const func = require(filename);   // error can not find module .

2, 部分使用变量 require( prefix + variable + suffix)

const filename = ' ./dir/first-level.js';
const func = require( '' + filename);   // =>error  编译超时或内存 溢出导致webpack进程退出

3, webpack自动创建一个context ,引入了所有路径符合^./dir.*$ 的文件。

生成的bundle.js 中打包了所有的文件的内容。如果目录下存在非js文件,则需要通过配置正确的loader来引入。

const filename = ' /first-level.js'
const func = require( '.dir' + filename);// success 成功获取文件内容

4,webpack自动创建一个context ,引入了所有路径符合 ^./di.*$的文件,生成的bundle.js中打包了所有文件的内容

const filename = 'r/first-level.js';
const func = require('./di' + filename);//  success 成功获取文件内容

5,webpack自动创建一个context,引入了所有路径符合 ./dir ^./.*.js$的文件,生成的bundle.js 中打包了所有文件的内容

const filename = 'first-level';
const func = require('./dir/' + filename + '.js'); //success

二、使用require.context 自定义正则规则,自己写一个require.context 参数: (相对的文件目录,true :包含子目录中的文件,引入文件匹配的正则表达式)

const context = require.context('./dir',true ,/\.js$/);
const keys = context.keys();//   ["./anthor-level.js","first-level.js"]
const filename = './first-level.js';
const func = context(filename); // success