如何从Webpack JavaScript中的文件夹,子文件夹及其子文件夹动态获取文件

时间:2018-10-21 05:41:51

标签: javascript regex vue.js webpack vuejs2

我正在尝试使用VueJswebpack中构建一个小型应用程序,我想在其中从文件夹动态包含config/routing文件。我有这样的文件夹结构:

plugins
|----Ecommerce
|--------backend
|--------frontend
|------------config.js
|------------routes.js
|------------components
|----------------products.vue
|----Blog
|--------backend
|--------frontend
|------------config.js
|------------routes.js
|------------components
|----------------posts.vue

为此,我尝试将我的文件包含在以下内容中:

const configRequire = require.context('./../plugins/', true, /\.\/[^/]+\/config\.js$/);
const routesRequire = require.context('./../plugins/', true, /\.\/[^/]+\/routes\.js$/);

但是以某种方式它不包括文件。我猜我的正则表达式有问题

编辑:

发现问题所在,如果我将文件夹结构保持如下,则不会导入文件folders/subfolder/subfolder

plugins
|----Ecommerce
|--------backend
|--------config.js
|--------routes.js
|--------frontend
|------------components
|----------------products.vue
|----Blog
|--------backend
|--------config.js
|--------routes.js
|--------frontend
|------------components
|----------------posts.vue

我可以看到文件已导入。但是当我将config/routes文件保存在frontend文件夹中时却没有得到

在这方面帮助我。谢谢。

1 个答案:

答案 0 :(得分:1)

选中此项以更好地了解您当前的正则表达式:https://regex101.com/r/Y9sDZc/1(删除第一行以查看第二行不匹配)。

我不确定您要匹配什么,不完全匹配,所以我只能猜测适合您的情况的正确解决方案,但这是一些选择:
config\.js与所有名为config.js的文件匹配。目录由您的require.context参数处理。不过,如果您控制所有文件,并确保使用plugins/foo/bar/config.js/somefile.txt是最简单的解决方案,那么这也将与config\.js相匹配。

更具选择性的是:
.*\/config\.js$

希望有帮助。