69 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import dns from 'dns';
 | 
						|
import { readFile } from 'node:fs/promises';
 | 
						|
import { defineConfig } from 'vite';
 | 
						|
import * as yaml from 'js-yaml';
 | 
						|
import locales from '../../locales/index.js';
 | 
						|
import { getConfig } from './vite.config.js';
 | 
						|
 | 
						|
dns.setDefaultResultOrder('ipv4first');
 | 
						|
 | 
						|
const defaultConfig = getConfig();
 | 
						|
 | 
						|
const { port } = yaml.load(await readFile('../../.config/default.yml', 'utf-8'));
 | 
						|
 | 
						|
const httpUrl = `http://localhost:${port}/`;
 | 
						|
const websocketUrl = `ws://localhost:${port}/`;
 | 
						|
 | 
						|
const devConfig = {
 | 
						|
	// 基本の設定は vite.config.js から引き継ぐ
 | 
						|
	...defaultConfig,
 | 
						|
	root: 'src',
 | 
						|
	publicDir: '../assets',
 | 
						|
	base: './',
 | 
						|
	server: {
 | 
						|
		host: 'localhost',
 | 
						|
		port: 5173,
 | 
						|
		proxy: {
 | 
						|
			'/api': {
 | 
						|
				changeOrigin: true,
 | 
						|
				target: httpUrl,
 | 
						|
			},
 | 
						|
			'/assets': httpUrl,
 | 
						|
			'/static-assets': httpUrl,
 | 
						|
			'/client-assets': httpUrl,
 | 
						|
			'/files': httpUrl,
 | 
						|
			'/twemoji': httpUrl,
 | 
						|
			'/fluent-emoji': httpUrl,
 | 
						|
			'/sw.js': httpUrl,
 | 
						|
			'/streaming': {
 | 
						|
				target: websocketUrl,
 | 
						|
				ws: true,
 | 
						|
			},
 | 
						|
			'/favicon.ico': httpUrl,
 | 
						|
			'/identicon': {
 | 
						|
				target: httpUrl,
 | 
						|
				rewrite(path) {
 | 
						|
					return path.replace('@localhost:5173', '');
 | 
						|
				},
 | 
						|
			},
 | 
						|
			'/url': httpUrl,
 | 
						|
			'/proxy': httpUrl,
 | 
						|
		},
 | 
						|
	},
 | 
						|
	build: {
 | 
						|
		...defaultConfig.build,
 | 
						|
		rollupOptions: {
 | 
						|
			...defaultConfig.build?.rollupOptions,
 | 
						|
			input: 'index.html',
 | 
						|
		},
 | 
						|
	},
 | 
						|
 | 
						|
	define: {
 | 
						|
		...defaultConfig.define,
 | 
						|
		_LANGS_FULL_: JSON.stringify(Object.entries(locales)),
 | 
						|
	},
 | 
						|
};
 | 
						|
 | 
						|
export default defineConfig(({ command, mode }) => devConfig);
 | 
						|
 |