Repository navigation
Expand file tree
/
Copy pathvite.config.mjs
More file actions
86 lines (81 loc) · 2.57 KB
/
Copy pathvite.config.mjs
File metadata and controls
86 lines (81 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import { defineConfig } from 'vite';
import aurelia from '@aurelia/vite-plugin';
import { resolve } from 'path';
import copy from 'rollup-plugin-copy';
// Extension scripts run as classic scripts sharing one global scope, so
// each bundle is wrapped in an IIFE to keep top-level bindings private
const CLASSIC_SCRIPTS = new Set(['build/detector.js', 'build/contentscript.js', 'build/background.js', 'build/devtools.js']);
function wrapClassicScripts() {
return {
name: 'aurelia-devtools:wrap-classic-scripts',
enforce: 'post',
renderChunk(code, chunk) {
if (!CLASSIC_SCRIPTS.has(chunk.fileName)) return null;
return { code: `(() => {\n${code}\n})();\n`, map: null };
}
};
}
export default defineConfig(({ mode }) => {
const production = mode === 'production';
if (mode === 'hook') {
// Page-side hook: a self-contained IIFE evaluated inside the inspected
// page, so it must not emit import statements or top-level declarations
return {
build: {
emptyOutDir: false,
sourcemap: false,
minify: false,
outDir: 'dist/build',
lib: {
entry: resolve(__dirname, 'src/hook/index.ts'),
formats: ['iife'],
name: 'AureliaDevtoolsHook',
fileName: () => 'hook.js'
}
}
};
}
return {
root: '.',
plugins: [
aurelia(),
wrapClassicScripts(),
copy({
targets: [
{ src: 'src/popups', dest: 'dist' },
{ src: 'images', dest: 'dist' },
{ src: 'sidebar.html', dest: 'dist' },
{ src: 'manifest.json', dest: 'dist' },
{ src: 'src/devtools/devtools.html', dest: 'dist/devtools' },
],
hook: 'writeBundle'
})
],
build: {
sourcemap: !production,
minify: production,
emptyOutDir: false,
rollupOptions: {
input: {
'build/sidebar': resolve(__dirname, 'src/sidebar/main.ts'),
'build/detector': resolve(__dirname, 'src/detector/detector.ts'),
'build/background': resolve(__dirname, 'src/background/background.ts'),
'build/contentscript': resolve(__dirname, 'src/contentscript/contentscript.ts'),
'build/devtools': resolve(__dirname, 'src/devtools/devtools.ts'),
},
output: {
dir: 'dist',
entryFileNames: '[name].js',
chunkFileNames: 'build/[name]-[hash].js',
assetFileNames: 'build/[name][extname]'
}
}
},
resolve: {
extensions: ['.ts', '.js'],
alias: {
'@': resolve(__dirname, 'src')
}
}
};
});