gpt4 book ai didi

webpack - SplitChunksPlugin 不为入口点之间共享的依赖项生成 block

转载 作者:行者123 更新时间:2023-12-03 23:12:30 25 4
gpt4 key购买 nike

我正在尝试使用代码拆分,这样我就可以在不复制模块的情况下对生产代码进行单元测试。我希望 webpack 能够识别我的 *.test.ts 文件依赖于与源代码本身相同的模块,并输出包含这些共享依赖项的包。但是,webpack 只输出入口点对应的包,并没有将共享代码提取到自己的包中。

我正在为我的用例( https://webpack.js.org/guides/code-splitting#prevent-duplication )使用官方文档中提供的基本配置,但没有运气。我能看到的唯一实质性区别是我使用加载器来转译我的代码,而官方示例不是。

git repo

文件夹结构

|- /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.jswebServer.test.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',
- }
+ splitChunks: {
+ cacheGroups: {
+ common: {
+ chunks: 'all',
+ enforce: true,
+ name: 'common'
+ }
+ }
+ }
},
module: {
rules: [{
test: /\.ts/,
include: [__dirname],
exclude: /node_modules/,
use: [
{ loader: 'babel-loader' },
{ loader: 'ts-loader' }
]
}]
}
module.exports = [serverConfig];

关于webpack - SplitChunksPlugin 不为入口点之间共享的依赖项生成 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56094950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com