Files
push-tx/cc_website/vite.config.ts
2024-06-14 18:48:46 +03:00

59 lines
1.6 KiB
TypeScript

import { defineConfig, type UserConfig } from 'vite';
import { nodePolyfills } from 'vite-plugin-node-polyfills';
import { viteSingleFile } from 'vite-plugin-singlefile';
const plugins = [
nodePolyfills({
// needed for bitcoinjs-lib
include: ['buffer'],
globals: {
Buffer: true,
},
}),
];
// "normal" configuration - building for coldcard.com/pushtx
// - creates a one JS and one CSS file
const websiteConfig: UserConfig = {
plugins,
build: {
outDir: 'build',
rollupOptions: {
output: {
entryFileNames: (chunkInfo) => {
if (chunkInfo.name !== 'index') {
throw new Error(
`Build failed. Expected a single JS chunk "index". Saw: "${chunkInfo.name}".`
);
}
return 'pushtx.js';
},
assetFileNames: (chunkInfo) => {
if (chunkInfo.name !== 'index.css') {
throw new Error(
`Build failed. Expected a single CSS chunk "index.css". Saw: "${chunkInfo.name}".`
);
}
return 'pushtx.css';
},
chunkFileNames: (chunkInfo) => {
throw new Error(`Build failed. Not expecting any chunk files. Saw: "${chunkInfo.name}".`);
},
},
},
},
};
// single file config - builds a single HTML file with everything inlined
// can be downloaded from coldcard.com/pushtx to self-host
const singleFileConfig: UserConfig = {
plugins: [...plugins, viteSingleFile()],
build: {
outDir: 'build-single-file',
},
};
const finalConfig = process.env.PUSHTX_SINGLE_FILE ? singleFileConfig : websiteConfig;
export default defineConfig(finalConfig);