Ctrl K
ComunidadGuías…

vite.config.external.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { defineConfig } from 'vite';
import { svelte } from '@sveltejs/vite-plugin-svelte';
import tailwindcss from '@tailwindcss/vite';
import terser from '@rollup/plugin-terser';
import cssnano from 'cssnano';
import postcss from 'postcss';
import { basename } from 'node:path';
import { ssrSafeCustomElements } from './vite.helpers';

// https://vite.dev/config/
export default defineConfig({
	publicDir: false,
	plugins: [
		tailwindcss(),
		svelte({
			compilerOptions: {
				customElement: true
			}
		}),
		ssrSafeCustomElements()
	],
	build: {
		target: 'baseline-widely-available',
		outDir: 'dist/external',
		minify: false,
		rollupOptions: {
			external: [/\/workers\//],
			input: {
				altcha: 'src/entry-external.ts'
			},
			output: [
				{
					assetFileNames: '[name].[ext]',
					entryFileNames: '[name].js',
					format: 'esm'
				},
				{
					assetFileNames: '[name].[ext]',
					entryFileNames: '[name].min.js',
					format: 'esm',
					plugins: [
						terser(),
						{
							name: 'minify-raw-css',
							async generateBundle(options, bundle) {
								for (const fileName in bundle) {
									const file = bundle[fileName];
									if (file.type === 'asset' && fileName.endsWith('.css')) {
										const result = await postcss([cssnano]).process(file.source, {
											from: fileName
										});
										file.source = result.css;
									}
									if (file.type === 'chunk' && file.facadeModuleId?.endsWith('.css')) {
										delete bundle[fileName];
									}
								}
							}
						}
					]
				},
				{
					assetFileNames: '[name].[ext]',
					entryFileNames: '[name].umd.cjs',
					format: 'umd',
					globals(name) {
						return basename(name);
					}
				},
				{
					assetFileNames: '[name].[ext]',
					entryFileNames: '[name].umd.min.cjs',
					format: 'umd',
					plugins: [terser()],
					globals(name) {
						return basename(name);
					}
				}
			]
		}
	},
	define: {
		ALTCHA_VERSION: JSON.stringify(process.env.npm_package_version)
	}
});