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.
中发布了
我正在将一个使用 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.
中发布了