Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多个条目的Webpack multiple resolve.alias列表_Webpack - Fatal编程技术网

多个条目的Webpack multiple resolve.alias列表

多个条目的Webpack multiple resolve.alias列表,webpack,Webpack,我正在尝试将旧的require.js grunt构建的应用程序转换为webpack。在我们当前的grunt设置中,我们构建了两个不同的bundle,我们有一个引导文件,在这里我们可以决定启动应用程序时需要哪个bundle 我认为我们在切换到webpack时应该保持这种结构。然而,当我试图用多个条目配置webpack时,我遇到了一个问题,即我无法为单独的入口点提供单独的解析别名列表。我需要能够提供这些别名列表,因为我们有许多模块需要按模块名称列出其他模块,例如,require(“我的模块”),并且

我正在尝试将旧的require.js grunt构建的应用程序转换为webpack。在我们当前的grunt设置中,我们构建了两个不同的bundle,我们有一个引导文件,在这里我们可以决定启动应用程序时需要哪个bundle

我认为我们在切换到webpack时应该保持这种结构。然而,当我试图用多个条目配置webpack时,我遇到了一个问题,即我无法为单独的入口点提供单独的解析别名列表。我需要能够提供这些别名列表,因为我们有许多模块需要按模块名称列出其他模块,例如,
require(“我的模块”)
,并且两个捆绑包中都有不同的
my module
实例

我找不到用webpack实现这一点的方法。可能是因为我被这种心态所束缚,无法找到解决这个问题的替代方案,所以欢迎任何建议

下面是我想做的代码:

webpack.config.js

module.exports = {
  entry: {
    cats: ["./app/app-cats"],
    dogs: ["./app/app-dogs"]
  },
  output: {
    path: path.join(__dirname, "bin"),
    filename: "[name].entry.js"
  },
  resolve: {
    alias: {
      // I would like to provide both entry points their own
      // list of aliases, but currently webpack is not supporting this.
      cats: {
        animals: './cats.js'
      },
      dogs: {
        animals: './dogs.js'
      },
    }
  },
};
以下是其他文件,以说明当前构建的工作原理:

var cats = ['dave', 'henry', 'martha'];
module.exports = cats;
dogs.js

var dogs = ['hulda', 'hilla'];
module.exports = dogs;
app-cats.js

var animals = require('animals')
console.log(animals);
app-dogs.js

var animals = require('animals')
console.log(animals);

由于这个问题没有答案,我将解释我们最终如何在项目中解决这个问题

首先,我们更改了webpack配置,以便只构建一个包而不是两个包。然后,我们为每个有两个不同实现的模块编写了“切换器”模块。切换器模块是一个新模块,它根据控制值返回正确的实现。在我们的例子中,我们最终编写了一个appMode模块,它最终从window对象读取模式

我们的一个开关模块示例:

define(["appMode", "scripts/userData/firstUserData", "scripts/userData/secondUserData"],
(appMode, firstImplementation, secondImplementation) => appMode.useFirstData() ? firstImplementation : secondImplementation)

这是一个艰难的改变,因为我们有100多个模块,它们有两种不同的实现,但它可以工作。

我对此有点好奇。这个
define
函数来自哪里?