首页 > 解决方案 > Webpack 仅将包中的最后一个文件导出为模块

问题描述

我正在使用 webpack4.30.0并尝试构建捆绑多个文件,每个文件都导出各自的模块,其名称反映了文件的名称。

例如:phonecall.js将导出对象phonecall等。使用标准ES6模块。

所有这些文件组合成Form.js一个全局对象(库),名称为Form.

我希望 bundle 中使用的所有模块也将作为 的属性公开Form,但无论出于何种原因,它只是最后一个可见的。在给定的例子中,那将是incident. 所以在构建之后,我将只有一个全局可用的对象 - Form.incident.

我相信这是设计使然,但我正在寻找一种方法来针对我的特定情况进行更改。

有什么方法可以使所有子模块在导出的库中可用?

这是我的webpack.config.js

const path = require('path');
const webpack = require('webpack');

module.exports = {
  entry: {
    form: [
      './src/phonecall.js',
      './src/contact.js',
      './src/email.js',
      './src/incident.js',
    ],
  },
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].js',
    library: 'Form',
  },
  plugins: [
    new webpack.optimize.LimitChunkCountPlugin({
      maxChunks: 1,
    }),
  ],
};

这个问题有一个解决方法——创建一个中心文件,它将引用所有模块并重新导出它们,但这是一个额外的步骤,并且很容易出错。

这个问题有没有开箱即用的解决方案,如何公开属于捆绑包的所有模块?

标签: javascriptwebpack

解决方案


推荐阅读