vite.config.mts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. server: {
  21. // Restrict CORS to only allow localhost
  22. cors: {
  23. origin: ['http://localhost:5173', 'http://localhost:3000'],
  24. methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
  25. credentials: true
  26. },
  27. host: 'localhost',
  28. },
  29. plugins: [
  30. libAssetsPlugin({
  31. outputPath: outDir,
  32. }) as PluginOption,
  33. watchPublicPlugin(),
  34. makeManifestPlugin({ outDir }),
  35. isDev && watchRebuildPlugin({ reload: true, id: 'chrome-extension-hmr' }),
  36. ],
  37. publicDir: resolve(rootDir, 'public'),
  38. build: {
  39. lib: {
  40. formats: ['iife'],
  41. entry: resolve(__dirname, 'src/background/index.ts'),
  42. name: 'BackgroundScript',
  43. fileName: 'background',
  44. },
  45. outDir,
  46. emptyOutDir: false,
  47. sourcemap: isDev,
  48. minify: isProduction,
  49. reportCompressedSize: isProduction,
  50. watch: watchOption,
  51. rollupOptions: {
  52. external: [
  53. 'chrome',
  54. // 'chromium-bidi/lib/cjs/bidiMapper/BidiMapper.js'
  55. ],
  56. },
  57. },
  58. envDir: '../',
  59. });