53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
import { resolve } from 'path';
|
|
import { mergeConfig, defineConfig } from 'vite';
|
|
import { crx, ManifestV3Export } from '@crxjs/vite-plugin';
|
|
import baseConfig, { baseManifest, baseBuildOptions } from './vite.config.base';
|
|
import hotReloadExtension from 'hot-reload-extension-vite';
|
|
|
|
const outDir = resolve(__dirname, 'dist');
|
|
const isDev = process.env.NODE_ENV === 'development';
|
|
|
|
export default mergeConfig(
|
|
baseConfig,
|
|
defineConfig({
|
|
plugins: [
|
|
crx({
|
|
manifest: {
|
|
...baseManifest,
|
|
background: {
|
|
service_worker: 'src/pages/background/index.ts',
|
|
type: 'module',
|
|
},
|
|
} as ManifestV3Export,
|
|
browser: 'chrome',
|
|
contentScripts: {
|
|
injectCss: true,
|
|
},
|
|
}),
|
|
...(isDev
|
|
? [
|
|
hotReloadExtension({
|
|
log: true,
|
|
backgroundPath: 'src/pages/background/index.ts',
|
|
}),
|
|
]
|
|
: []),
|
|
],
|
|
build: {
|
|
...baseBuildOptions,
|
|
outDir,
|
|
...(isDev
|
|
? {
|
|
rollupOptions: {
|
|
output: {
|
|
entryFileNames: 'assets/[name].js',
|
|
chunkFileNames: 'assets/[name].js',
|
|
assetFileNames: 'assets/[name][extname]',
|
|
},
|
|
},
|
|
}
|
|
: {}),
|
|
},
|
|
})
|
|
);
|