import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import UnoCSS from 'unocss/vite' import { transformerDirectives } from 'unocss' import presetIcons from '@unocss/preset-icons' import presetUno from '@unocss/preset-uno' import presetWind from '@unocss/preset-wind' /* If you are developing a UI outside of a Kinode project, comment out the following 2 lines: */ // import manifest from '../pkg/manifest.json' // import metadata from '../pkg/metadata.json' /* IMPORTANT: This must match the process name from pkg/manifest.json + pkg/metadata.json The format is "/" + "process_name:package_name:publisher_node" */ const BASE_URL = `/main:app_store:sys`; // This is the proxy URL, it must match the node you are developing against const PROXY_URL = (process.env.VITE_NODE_URL || 'http://127.0.0.1:8080').replace('localhost', '127.0.0.1'); console.log('process.env.VITE_NODE_URL', process.env.VITE_NODE_URL, PROXY_URL); export default defineConfig({ plugins: [ UnoCSS({ presets: [presetUno(), presetWind(), presetIcons()], shortcuts: [ { 'flex-center': 'flex justify-center items-center', 'flex-col-center': 'flex flex-col justify-center items-center', }, ], rules: [ ], theme: { colors: { 'white': '#FFF5D9', 'black': '#22211F', 'orange': '#F35422', 'transparent': 'transparent', 'gray': '#7E7E7E', }, font: { 'sans': ['Barlow', 'ui-sans-serif', 'system-ui', '-apple-system', 'BlinkMacSystemFont', '"Segoe UI"', 'Roboto', '"Helvetica Neue"', 'Arial', '"Noto Sans"', 'sans-serif', '"Apple Color Emoji"', '"Segoe UI Emoji"', '"Segoe UI Symbol"', '"Noto Color Emoji"'], 'serif': ['ui-serif', 'Georgia', 'Cambria', '"Times New Roman"', 'Times', 'serif'], 'mono': ['ui-monospace', 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', '"Liberation Mono"', '"Courier New"', 'monospace'], 'heading': ['OpenSans', 'ui-sans-serif', 'system-ui', '-apple-system', 'BlinkMacSystemFont', '"Segoe UI"', 'Roboto', '"Helvetica Neue"', 'Arial', '"Noto Sans"', 'sans-serif', '"Apple Color Emoji"', '"Segoe UI Emoji"', '"Segoe UI Symbol"', '"Noto Color Emoji"'], 'display': ['Futura', 'ui-sans-serif', 'system-ui', '-apple-system', 'BlinkMacSystemFont', '"Segoe UI"', 'Roboto', '"Helvetica Neue"', 'Arial', '"Noto Sans"', 'sans-serif', '"Apple Color Emoji"', '"Segoe UI Emoji"', '"Segoe UI Symbol"', '"Noto Color Emoji"'], }, }, transformers: [ transformerDirectives() ], }), react(), ], base: BASE_URL, build: { rollupOptions: { external: ['/our.js'] } }, server: { open: true, proxy: { '/our': { target: PROXY_URL, changeOrigin: true, }, [`${BASE_URL}/our.js`]: { target: PROXY_URL, changeOrigin: true, rewrite: (path) => path.replace(BASE_URL, ''), }, // This route will match all other HTTP requests to the backend [`^${BASE_URL}/(?!(@vite/client|src/.*|node_modules/.*|@react-refresh|__uno.css|$))`]: { target: PROXY_URL, changeOrigin: true, }, '/api/*': { target: PROXY_URL, changeOrigin: true, rewrite: (path) => path.replace('/api', ''), }, // '/example': { // target: PROXY_URL, // changeOrigin: true, // rewrite: (path) => path.replace(BASE_URL, ''), // // This is only for debugging purposes // configure: (proxy, _options) => { // proxy.on('error', (err, _req, _res) => { // console.log('proxy error', err); // }); // proxy.on('proxyReq', (proxyReq, req, _res) => { // console.log('Sending Request to the Target:', req.method, req.url); // }); // proxy.on('proxyRes', (proxyRes, req, _res) => { // console.log('Received Response from the Target:', proxyRes.statusCode, req.url); // }); // }, // }, } } });