Webpack 不捆绑 AMD 模块中所需的文件

Webpack doesn't bundle files required within AMD module

我正在将一个使用 requirejs 的现有网站迁移到 webpack。我以为我可以用 webpack.config.js 替换 requirejs 配置并完成它。但是,webpack 不包含任何 AMD 模块所需的任何依赖项。我所有的模块都是以下形式:

define(require => {
    const dep1 = require('models/dep1');
    const dep2 = require('models/dep2');
    ...
    const Utils = {
        function doStuff() {
            ...
        },
    };

    return Utils;
});

这是我的 webpack 配置的简化版本:

const webpack = require('webpack');

const sourcePath = __dirname;
const outputPath = './dist';

module.exports = (env) => {
  return {
    context: sourcePath,
    entry: {
      app: './src/index.js',
    },
    output: {
      path: outputPath,
      filename: '[name].bundle.js',
      chunkFilename: '[id].[chunkhash].js',
    },
    module: {
      rules: [
        {
          test: /\.jsx?$/,
          exclude: /node_modules/,
          use: [
            'babel-loader',
          ],
        },
      ],
    },
  };
};

还有我的 .babelrc:

{
  "presets": [
    ["babel-preset-env", {
      "targets": {
        "browsers": [
          "last 2 Chrome versions",
          "last 2 Firefox versions"
        ]
      },
      "modules": false
    }],
    "react"
  ],
}

如果我从文件中删除 define 包装器并将 require 语句替换为 import 语句,那么它会弄清楚如何将依赖项包含在包中。

是否需要额外的配置才能使 webpack 将依赖项包含在捆绑包中? webpack 是否可能不理解定义 define(require => 的箭头函数样式而不是 define(function(require) {

原来这是一个错误。我最终向 webpack 发送了一个 pull request 来修复它,它在 3.9.0.

中发布了