mirror of
https://github.com/zoriya/v10.git
synced 2026-08-05 21:57:29 +00:00
35 lines
1.0 KiB
TypeScript
35 lines
1.0 KiB
TypeScript
import { globSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
import { dirname, join } from 'node:path';
|
|
import { resolveImports } from './resolve-css-imports.ts';
|
|
import type { BuildPlugin } from './types.ts';
|
|
|
|
interface CopyCssPluginOptions {
|
|
skinsDir: string;
|
|
outDir: string;
|
|
}
|
|
|
|
export function copyCssPlugin(options: CopyCssPluginOptions): BuildPlugin {
|
|
const { skinsDir, outDir } = options;
|
|
|
|
return {
|
|
name: 'copy-css',
|
|
buildStart() {
|
|
for (const file of globSync('src/**/*.css')) {
|
|
this.addWatchFile(file);
|
|
}
|
|
for (const file of globSync(join(skinsDir, '**/*.css'))) {
|
|
this.addWatchFile(file);
|
|
}
|
|
},
|
|
writeBundle() {
|
|
for (const file of globSync('src/**/*.css')) {
|
|
const content = readFileSync(file, 'utf-8');
|
|
const resolved = resolveImports(content, dirname(file), skinsDir);
|
|
const outFile = join(outDir, file.replace(/^src\//, ''));
|
|
mkdirSync(dirname(outFile), { recursive: true });
|
|
writeFileSync(outFile, resolved);
|
|
}
|
|
},
|
|
};
|
|
}
|