我正在使用 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'),
},
},
});
我目前正在使用这个黑客 https://github.com/vitejs/vite/issues/7188也就是说,将我的构建包装在 IIFE 中(为此,我删除了esbuild.format
选项)。