【发布时间】:2022-11-09 05:35:14
【问题描述】:
我正在使用 Vite 作为我的构建工具构建一个 chrome 扩展。主要问题在缩小和修改期间,创建了很多全局变量。将我的脚本注入页面后,它们与窗口对象上已定义的变量发生冲突。
我想完美的解决方案是将我的整个脚本包装在 IIFE 中。我尝试使用esbuild.format = 'iife'。生成的构建实际上包含在 IIFE 中,但是所有导入都不是内联的。相反,生成的脚本就像 15 行长,带有一堆 require 语句,这显然在浏览器中不起作用。
这是我的配置文件:
export default defineConfig({
plugins: [
vue(),
],
esbuild: {
format: 'iife',
},
build: {
emptyOutDir: false,
rollupOptions: {
input: resolve(__dirname, './src/web/index.ts'),
output: {
dir: resolve(__dirname, './dist'),
entryFileNames: 'web.js',
assetFileNames: 'style.css',
},
},
},
resolve: {
alias: {
'@': resolve(__dirname, './src'),
},
},
});
我目前正在使用this hack,可以说将我的构建包装在 IIFE 中(为此我删除了esbuild.format 选项)。
【问题讨论】: