-
Notifications
You must be signed in to change notification settings - Fork 94
/
Copy pathvite.config.ts
83 lines (78 loc) · 1.98 KB
/
vite.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
// SPDX-FileCopyrightText: Ferdinand Thiessen <opensource@fthiessen.de>
// SPDX-License-Identifier: AGPL-3.0-or-later
/// <reference types="vitest/config" />
import { createAppConfig } from '@nextcloud/vite-config'
import type { ViteDevServer, Connect } from 'vite'
import webpackStats from 'rollup-plugin-webpack-stats'
import path from 'path'
const rewriteMiddlewarePlugin = {
name: 'rewriteAssetsUrl',
configureServer(server: ViteDevServer) {
server.middlewares.use((req, res, next: Connect.NextFunction): void => {
const m = req.url?.match(/\/js\/text-(.*)\.mjs$/)
if (m) {
if (m[1] === 'text') {
req.url = req.url?.replace(/\/js\/text-.*.mjs/, '/src/main.js')
} else {
req.url = req.url?.replace(/\/js\/text-.*.mjs/, `/src/${m[1]}.js`)
}
}
next()
})
}
}
const config = createAppConfig({
text: path.join(__dirname, 'src', 'main.js'),
files: path.join(__dirname, 'src', 'files.js'),
public: path.join(__dirname, 'src', 'public.js'),
viewer: path.join(__dirname, 'src', 'viewer.js'),
editor: path.join(__dirname, 'src', 'editor.js'),
init: path.join(__dirname, 'src', 'init.js'),
}, {
createEmptyCSSEntryPoints: true,
extractLicenseInformation: {
overwriteLicenses: {
khroma: 'MIT',
},
},
thirdPartyLicense: false,
config: {
base: process.env.BASE,
resolve: {
dedupe: ['vue'],
},
css: {
modules: {
localsConvention: 'camelCase',
},
},
plugins: [
webpackStats(),
rewriteMiddlewarePlugin,
],
build: {
cssCodeSplit: true,
rollupOptions: {
output: {
manualChunks: (id) => {
// Make the emoji related dependencies a custom chunk to reduce the size of the RichText chunk
if (id.includes('emoji-mart-vue') || id.includes('emoji-datasource')) {
return 'emoji-picker'
}
},
},
},
},
test: {
setupFiles: ['src/tests/setup.mjs'],
environment: 'jsdom',
globals: true,
server: {
deps: {
inline: [/@nextcloud.*/],
}
},
},
},
})
export default config