Webpack 浏览器扩展无法使用代码拆分
我有一个跨浏览器扩展(目前在Chrome和Firefox上运行)用typescript构建,用webpack编译。我想使用代码拆分来减少捆绑包的大小。但是,当我在webpack配置中启用代码拆分时,扩展不起作用。在后台脚本中有一个browserAction侦听器,如果没有用户,它将打开登录页面。或者,如果用户已登录,将显示弹出窗口。但是,单击浏览器操作图标不起任何作用。后台脚本中不会显示任何错误消息。不会显示登录窗口或弹出窗口 下面是我遇到问题的配置部分。当我把这部分注释掉,不进行代码拆分时,一切都正常Webpack 浏览器扩展无法使用代码拆分,webpack,google-chrome-extension,browser-extension,Webpack,Google Chrome Extension,Browser Extension,我有一个跨浏览器扩展(目前在Chrome和Firefox上运行)用typescript构建,用webpack编译。我想使用代码拆分来减少捆绑包的大小。但是,当我在webpack配置中启用代码拆分时,扩展不起作用。在后台脚本中有一个browserAction侦听器,如果没有用户,它将打开登录页面。或者,如果用户已登录,将显示弹出窗口。但是,单击浏览器操作图标不起任何作用。后台脚本中不会显示任何错误消息。不会显示登录窗口或弹出窗口 下面是我遇到问题的配置部分。当我把这部分注释掉,不进行代码拆分时,一
module.exports = {
mode: 'development',
entry: {
login: path.join(__dirname, './src/js/login.ts'),
popup: path.join(__dirname, './src/js/popup.ts'),
options: path.join(__dirname, './src/js/options.ts'),
background: path.join(__dirname, './src/js/background.ts'),
},
output: {
path: path.join(__dirname, './dist'),
filename: 'js/[name].js'
},
// When I remove this part extension is working
optimization: {
splitChunks: {
name: 'vendor',
chunks: "initial"
}
},
module: {
...
你知道为什么会这样吗?我怎样才能让它工作?在结果供应商区块中,扩展的几个入口点主要使用节点_模块依赖项(firebase、ramda等)
谢谢你的帮助。我也遇到了同样的问题,我认为这与
background.js
文件有关
让我们假设您的login
条目打算在login.html
页面中使用,login.ts
被分为login.js
和547.js
(后面包含所有条目之间的所有共享代码)。
当HtmlWebpackPlugin
构建HTML文件时,它会自动将login.js
和547.js
都包含在login.js
中,因为它“知道”这是login.js
的依赖项
但是,background.js
它是一个服务工作者,因此不包含在HTML页面中,因此它们的依赖关系不会加载到任何地方,因为为此,您应该有另一个插件,可以自动在background.js
开头添加行loadScript(547.js)
最后,我刚刚排除了要拆分的
background
:
splitChunks: {
chunks(chunk) {
return chunk.name !== 'background';
},
},
“扩展不起作用”太含糊了,你能调试并澄清到底发生了什么吗?@wOxxOm请填写更多细节。我真的没有什么可以添加的。试着调试它,比如在代码中设置一个断点(例如在脚本的开头),重新加载页面,看看当你通过“run to cursor”一步一步地或分块地运行它时会发生什么。