-
Notifications
You must be signed in to change notification settings - Fork 0
/
wxt.config.ts
101 lines (86 loc) · 2.59 KB
/
wxt.config.ts
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/**
* @file WXT config
* @see {@link https://wxt.dev/api/config.html}
*/
import Vue from '@vitejs/plugin-vue'
import UnoCSS from 'unocss/vite'
import VueComponents from 'unplugin-vue-components/vite'
import { defineConfig } from 'wxt'
import { resolve } from './scripts/utils'
import type { Manifest } from 'wxt/browser'
import type { Command } from '@/constants/command'
export default defineConfig({
// TODO: use dynamic import
hooks: {
'vite:build:extendConfig': (entrypoints, viteConfig) => {
if (entrypoints.some(entrypoint => entrypoint.type === 'options')) {
if (!viteConfig.build?.rollupOptions?.output) return
function manualChunks(id: string) {
if (!id.includes('node_modules')) return
if (id.includes('codemirror')) {
return 'libs-codemirror'
} else if (id.includes('vue')) {
return 'libs-vue'
} else if (id.includes('lodash')) {
return 'libs-lodash'
} else if (id.includes('@prettier') || id.includes('prettier/plugin')) {
return 'libs-prettier-official'
} else if (id.includes('svelte')) {
return 'libs-lang-svelte'
} else if (id.includes('java')) {
return 'libs-lang-java'
} else if (id.includes('graphql')) {
return 'libs-lang-graphql'
}
}
if (Array.isArray(viteConfig.build.rollupOptions.output)) {
viteConfig.build.rollupOptions.output.forEach(item => {
item.manualChunks = manualChunks
})
} else {
viteConfig.build.rollupOptions.output.manualChunks = manualChunks
}
}
},
},
outDir: 'dist',
manifest: {
name: 'Prettier Now',
permissions: ['storage'],
homepage_url: 'https://github.com/ntnyq/prettier-now',
commands: {
openOptionsPage: {
suggested_key: {
default: 'Alt+O',
},
description: 'Open the Options page',
},
} satisfies Record<Command, Manifest.WebExtensionManifestCommandsType>,
},
runner: {
chromiumArgs: ['--auto-open-devtools-for-tabs'],
startUrls: ['https://ntnyq.com'],
},
imports: false,
vite: () => ({
css: {
devSourcemap: true,
},
build: {
// Max per file size for Firefox is 4MB.
chunkSizeWarningLimit: 4 * 1024,
},
define: {
__INTLIFY_JIT_COMPILATION__: JSON.stringify(true),
},
plugins: [
Vue(),
UnoCSS(),
VueComponents({
dirs: [resolve('components')],
dts: 'types/components.d.ts',
resolvers: [],
}),
],
}),
})