import { resolve } from 'node:path';
|
|
import vue from '@vitejs/plugin-vue';
|
import type { Plugin } from 'vite';
|
|
import { defineConfig } from 'vite';
|
|
const DEVELOPMENT_BASE_PATH = '/onlyoffice-plugins/0.1.0-dev/dms-qianpiye-annotator/';
|
const ONLYOFFICE_SDK_PATH = '/onlyoffice-sdk';
|
const VITE_RESOLVED_SDK_PATH = '/onlyoffice-plugins/0.1.0-dev/v1/';
|
|
function onlyOfficeSdkDevelopmentPlugin(): Plugin {
|
return {
|
apply: 'serve',
|
name: 'dms-qianpiye-onlyoffice-sdk-development',
|
transformIndexHtml: {
|
order: 'post',
|
handler(html) {
|
return html
|
.replace(/\.\.\/v1\/plugins\.css/g, `${ONLYOFFICE_SDK_PATH}/v1/plugins.css`)
|
.replace(/\.\.\/v1\/plugins\.js/g, `${ONLYOFFICE_SDK_PATH}/v1/plugins.js`)
|
// Vite resolves ../v1 against the release path before post transforms.
|
.replace(new RegExp(`${VITE_RESOLVED_SDK_PATH}plugins\\.css`, 'g'), `${ONLYOFFICE_SDK_PATH}/v1/plugins.css`)
|
.replace(new RegExp(`${VITE_RESOLVED_SDK_PATH}plugins\\.js`, 'g'), `${ONLYOFFICE_SDK_PATH}/v1/plugins.js`);
|
},
|
},
|
};
|
}
|
|
export default defineConfig(({ command }) => ({
|
// 开发态必须与后端 pluginsData 的 release URL 对齐,否则 Vite 会把 config.json 回退为 index.html。
|
base: command === 'serve' ? DEVELOPMENT_BASE_PATH : './',
|
plugins: [vue(), ...(command === 'serve' ? [onlyOfficeSdkDevelopmentPlugin()] : [])],
|
publicDir: 'public',
|
build: { outDir: 'dist', emptyOutDir: true },
|
server: {
|
host: '0.0.0.0',
|
port: 4183,
|
proxy: {
|
[ONLYOFFICE_SDK_PATH]: {
|
changeOrigin: true,
|
rewrite: (path) => path.replace(ONLYOFFICE_SDK_PATH, '/sdkjs-plugins'),
|
target: process.env.ONLYOFFICE_DOCS_URL ?? 'http://localhost:20000',
|
},
|
},
|
strictPort: true,
|
},
|
resolve: { alias: { '@': resolve(__dirname, 'src') } },
|
}));
|