super-productivity/packages/plugin-dev/sync-md/vite.config.ts
2025-07-07 18:39:14 +02:00

70 lines
2.3 KiB
TypeScript

import { defineConfig } from 'vite';
import solidPlugin from 'vite-plugin-solid';
import { resolve } from 'path';
import fs from 'fs';
import path from 'path';
export default defineConfig({
base: './',
plugins: [
solidPlugin(),
{
name: 'copy-files',
closeBundle() {
// Copy manifest.json to dist
const manifestSrc = path.resolve(__dirname, 'src/manifest.json');
const manifestDest = path.resolve(__dirname, 'dist/manifest.json');
fs.copyFileSync(manifestSrc, manifestDest);
// Copy icon.svg to dist root
const iconSrc = path.resolve(__dirname, 'src/assets/icon.svg');
const iconDest = path.resolve(__dirname, 'dist/icon.svg');
fs.copyFileSync(iconSrc, iconDest);
// Copy simple-plugin.js as plugin.js
const pluginSrc = path.resolve(__dirname, 'src/simple-plugin.js');
const pluginDest = path.resolve(__dirname, 'dist/plugin.js');
fs.copyFileSync(pluginSrc, pluginDest);
// Move index.html from src subdirectory to root and fix paths
const htmlSrc = path.resolve(__dirname, 'dist/src/index.html');
const htmlDest = path.resolve(__dirname, 'dist/index.html');
if (fs.existsSync(htmlSrc)) {
// Read the HTML content
let htmlContent = fs.readFileSync(htmlSrc, 'utf8');
// Fix the paths to be relative to the plugin root
htmlContent = htmlContent.replace(/src="\.\.\/index\.js"/g, 'src="./index.js"');
htmlContent = htmlContent.replace(
/href="\.\.\/index\.css"/g,
'href="./index.css"',
);
// Write the fixed HTML
fs.writeFileSync(htmlDest, htmlContent);
// Remove the src directory
fs.rmSync(path.resolve(__dirname, 'dist/src'), {
recursive: true,
force: true,
});
}
},
},
],
build: {
outDir: 'dist',
emptyOutDir: true,
rollupOptions: {
input: {
index: resolve(__dirname, 'src/index.html'),
background: resolve(__dirname, 'src/background.ts'),
},
output: {
entryFileNames: '[name].js',
chunkFileNames: '[name]-[hash].js',
assetFileNames: '[name].[ext]',
format: 'iife',
},
},
copyPublicDir: false,
},
publicDir: 'src/assets',
});