| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import path from 'path';
- import react from '@vitejs/plugin-react';
- import glob from 'glob';
- import { nodeExternals } from 'rollup-plugin-node-externals';
- import { Server } from 'socket.io';
- import type { Plugin } from 'vite';
- import { defineConfig } from 'vite';
- import dts from 'vite-plugin-dts';
- import { YSocketIO } from 'y-socket.io/dist/server';
- const excludeFiles = [
- '**/components/playground/*',
- '**/main.tsx',
- '**/vite-env.d.ts',
- ];
- const devSocketIOPlugin = (): Plugin => ({
- name: 'dev-socket-io',
- apply: 'serve',
- configureServer(server) {
- if (!server.httpServer) return;
- // setup socket.io
- const io = new Server(server.httpServer);
- io.on('connection', (socket) => {
- // eslint-disable-next-line no-console
- console.log('Client connected');
- socket.on('disconnect', () => {
- // eslint-disable-next-line no-console
- console.log('Client disconnected');
- });
- });
- // setup y-socket.io
- const ysocketio = new YSocketIO(io);
- ysocketio.initialize();
- },
- });
- // https://vitejs.dev/config/
- export default defineConfig({
- plugins: [
- react(),
- devSocketIOPlugin(),
- dts({
- entryRoot: 'src',
- exclude: [
- ...excludeFiles,
- ],
- copyDtsFiles: true,
- }),
- {
- ...nodeExternals({
- devDeps: true,
- builtinsPrefix: 'ignore',
- }),
- enforce: 'pre',
- },
- ],
- build: {
- outDir: 'dist',
- sourcemap: true,
- lib: {
- entry: glob.sync(path.resolve(__dirname, 'src/**/*.{ts,tsx}'), {
- ignore: [
- ...excludeFiles,
- '**/*.spec.ts',
- ],
- }),
- name: 'editor-libs',
- formats: ['es'],
- },
- rollupOptions: {
- output: {
- preserveModules: true,
- preserveModulesRoot: 'src',
- },
- },
- },
- });
|