是否可以在 2 个不同的文件夹中查找 js 模块,同时将一个优先于另一个?

Is it possible to lookup a js module in 2 different folders while priortizing one over the other?

我需要创建一个高度可定制的 web 应用程序,想知道是否以及如何结合使用 es6 模块加载和 webpack 来覆盖更大应用程序堆栈的单个文件。

所以假设我的目录结构如下:

./src
|--/core
|--|--moduleA.js
|--|--moduleB.js
|--|--app.js
|--/theme
|--|--moduleB.js

我的app.js内容就像

import moduleA from "./moduleA";
import moduleB from "./moduleB";

console.log(moduleA); // out: i am from core!
console.log(moduleB); // out: i am from theme!

所以 theme/ 目录简单地覆盖了核心文件...

有没有办法通过 webpack 加载器配置来解决这个问题,或者我是否必须 运行 预构建,其中我将所有文件从核心复制到第三个位置,然后是相同的主题目录,然后是第三个目录的构建。

我知道如何用第三个位置和合并的 src 文件解决这个问题,但我更愿意用 webpack 解决这个问题。

resolve modules应该可以。
您可以将 coretheme 作为模块添加。首先定义 theme 以便 webpack 首先查找那里。

modules: [
    path.resolve(__dirname, "src/theme"),
    path.resolve(__dirname, "src/core"),
    'node_modules',
]

然后导入没有相对路径的模块。就 from "moduleA"