我正在尝试使用代码拆分,这样我就可以在不复制模块的情况下对生产代码进行单元测试。我希望 webpack 能够识别出我的 *.test.ts 文件依赖于与源代码本身相同的模块,并输出包含这些共享依赖项的包。但是,webpack 只输出入口点对应的包,并没有将共享代码提取到自己的包中。
我正在为我的用例(https://webpack.js.org/guides/code-splitting#prevent-duplication)使用官方文档中提供的基本配置,但没有运气。我能看到的唯一实质性区别是我使用加载器来转译我的代码,而官方示例不是。
文件夹结构
|- /MyProject
|- webpack.config.js
|- /node_modules
|- /build
|- /src
|- webServer.ts
|- myLib.ts
|- webServer.test.ts
|- myLib.test.ts
网络服务器.ts
import './myLib';
// do webserver stuff
myLib.test.ts
import './myLib';
import mocha, chai, etc etc
// unit tests for myLib
webServer.test.ts
import './myLib.test';
// this file is just a convenient entry point for grouping unit tests
webpack.config.js
var nodeExternals = require('webpack-node-externals');
const serverConfig = {
mode: 'development',
target: 'node',
externals: [nodeExternals()],
entry: {
webServer: './src/webServer.ts',
'webServer.test': './src/webServer.test.ts'
},
output: {
path: __dirname + '/build',
filename: '[name].js'
},
resolve: {
extensions: ['.ts']
},
optimization: {
splitChunks: {
chunks: 'all',
}
},
module: {
rules: [{
test: /\.ts/,
include: [__dirname],
exclude: /node_modules/,
use: [
{ loader: 'babel-loader' },
{ loader: 'ts-loader' }
]
}]
}
module.exports = [serverConfig];
我希望 webpack 发出 3 个文件:webServer.js
、webServer.test.js
和第三个捆绑myLib
. 但是,我只得到 2 个文件:webServer.js
和webServer.test.js