将库从具有多个已定义模块的Requirejs迁移到Webpack

时间:2017-10-05 01:54:15

标签: javascript webpack requirejs amd

目前,我们正在使用requirejs将库的JavaScript捆绑在一起。我的任务是迁移到Webpack。

可以使用bundles配置访问构建文件中的每个模块。

define('internal', function () { // <-- some utility method, class...
     return function () {};
}

...

define('library', ['internal'], function (internal) { // <-- the main module

});

在消费应用中,它可能看起来像:

define(['internal'], function (internal) {

});

只要require配置在bundles属性中具有内部内容,如下所示:

bundles: {
    'library': ['internal']
}

然后将从库中使用内部模块。

我将文件构建为webpack中的库目标,但它目前没有构建多个命名定义。

module.exports = {
    entry: {
        library: ['main', 'internal']
    },
    output: {
        library: 'libraryname',
        libraryTarget: 'amd',
        filename: '[name].build.js'
    },
    /**
     Resolve, loaders...
    **/
    plugins: [
         // https://github.com/Waidd/multidefine-library-webpack-plugin
         new MultidefineLibraryWebpackPlugin([/* config */])
    ]
}

使用该配置,它会按照预期的方式与库中内置的定义关闭,但由于不经常使用全局定义队列,因此需要超时。如果我有

require(['library'], function () {
    require(['internal'], function () {
        //it will be loaded now
    }
})

然后它将按预期加载,但如果它们在同一依赖项数组中则不会加载。

无论如何都要让Webpack定义几个外部消耗的模块,这些模块不是主要的&#39;模块?我如何能够在当前requirejs构建系统中外部定义模块?

0 个答案:

没有答案