50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
import { resolve } from 'node:path';
|
|
import { makeEntryPointPlugin } from '@extension/hmr';
|
|
import { getContentScriptEntries, withPageConfig } from '@extension/vite-config';
|
|
import { IS_DEV } from '@extension/env';
|
|
import { build } from 'vite';
|
|
import { build as buildTW } from 'tailwindcss/lib/cli/build';
|
|
|
|
const rootDir = resolve(import.meta.dirname);
|
|
const srcDir = resolve(rootDir, 'src');
|
|
const matchesDir = resolve(srcDir, 'matches');
|
|
|
|
const configs = Object.entries(getContentScriptEntries(matchesDir)).map(([name, entry]) => ({
|
|
name,
|
|
config: withPageConfig({
|
|
mode: IS_DEV ? 'development' : undefined,
|
|
resolve: {
|
|
alias: {
|
|
'@src': srcDir,
|
|
},
|
|
},
|
|
publicDir: resolve(rootDir, 'public'),
|
|
plugins: [IS_DEV && makeEntryPointPlugin()],
|
|
build: {
|
|
lib: {
|
|
name: name,
|
|
formats: ['iife'],
|
|
entry,
|
|
fileName: name,
|
|
},
|
|
outDir: resolve(rootDir, '..', '..', 'dist', 'content-ui'),
|
|
},
|
|
}),
|
|
}));
|
|
|
|
const builds = configs.map(async ({ name, config }) => {
|
|
const folder = resolve(matchesDir, name);
|
|
const args = {
|
|
['--input']: resolve(folder, 'index.css'),
|
|
['--output']: resolve(rootDir, 'dist', name, 'index.css'),
|
|
['--config']: resolve(rootDir, 'tailwind.config.ts'),
|
|
['--watch']: IS_DEV,
|
|
};
|
|
await buildTW(args);
|
|
//@ts-expect-error This is hidden property into vite's resolveConfig()
|
|
config.configFile = false;
|
|
await build(config);
|
|
});
|
|
|
|
await Promise.all(builds);
|