我正在尝试将我们旧的require.js grunt构建的应用程序转换到webpack。在我们当前的grunt设置中,我们构建了两个不同的bundle,并且我们有一个bootstrap文件,在这个文件中,我们决定在启动应用程序时需要哪个bundle。
我觉得在转到webpack的时候,我们应该保持这样的结构。但是,当我尝试使用多个条目配置webpack时,我遇到了无法为单独的入口点提供单独的解析别名列表的问题。我需要能够提供这些别名列表,因为我们有许多模块需要通过模块名称的其他模块,即require("my-module"),并且我们在两个包中都有不同的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'
},
}
},
};下面是其余的文件来说明我们当前的构建是如何工作的:
cats.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);发布于 2017-03-02 15:36:49
由于这个问题没有答案,我将解释我们是如何在我们的项目中解决这个问题的。
首先,我们更改了webpack的配置,使我们只构建一个包,而不是两个包。然后,我们为每个具有两个不同实现的模块编写"switcher“模块。Switcher模块是一个新模块,它根据控制值返回正确的实现。在我们的例子中,我们最终编写了一个appMode模块,它最终从window对象读取模式。
我们的一个切换器模块的示例:
define(["appMode", "scripts/userData/firstUserData", "scripts/userData/secondUserData"],
(appMode, firstImplementation, secondImplementation) => appMode.useFirstData() ? firstImplementation : secondImplementation)这是一个费力的改变,因为我们有超过100个模块,它们有两个不同的实现,但它是有效的。
https://stackoverflow.com/questions/39673634
复制相似问题