vite.config.mts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { resolve } from 'node:path';
  2. import { defineConfig, type PluginOption } from "vite";
  3. import libAssetsPlugin from '@laynezh/vite-plugin-lib-assets';
  4. import makeManifestPlugin from './utils/plugins/make-manifest-plugin';
  5. import { watchPublicPlugin, watchRebuildPlugin } from '@extension/hmr';
  6. import { isDev, isProduction, watchOption } from '@extension/vite-config';
  7. const rootDir = resolve(__dirname);
  8. const srcDir = resolve(rootDir, 'src');
  9. const outDir = resolve(rootDir, '..', 'dist');
  10. export default defineConfig({
  11. resolve: {
  12. alias: {
  13. '@root': rootDir,
  14. '@src': srcDir,
  15. '@assets': resolve(srcDir, 'assets'),
  16. },
  17. conditions: ['browser', 'module', 'import', 'default'],
  18. mainFields: ['browser', 'module', 'main']
  19. },
  20. plugins: [
  21. libAssetsPlugin({
  22. outputPath: outDir,
  23. }) as PluginOption,
  24. watchPublicPlugin(),
  25. makeManifestPlugin({ outDir }),
  26. isDev && watchRebuildPlugin({ reload: true, id: 'chrome-extension-hmr' }),
  27. ],
  28. publicDir: resolve(rootDir, 'public'),
  29. build: {
  30. lib: {
  31. formats: ['iife'],
  32. entry: resolve(__dirname, 'src/background/index.ts'),
  33. name: 'BackgroundScript',
  34. fileName: 'background',
  35. },
  36. outDir,
  37. emptyOutDir: false,
  38. sourcemap: isDev,
  39. minify: isProduction,
  40. reportCompressedSize: isProduction,
  41. watch: watchOption,
  42. rollupOptions: {
  43. external: [
  44. 'chrome',
  45. // 'chromium-bidi/lib/cjs/bidiMapper/BidiMapper.js'
  46. ],
  47. },
  48. },
  49. envDir: '../',
  50. });