Files
v10/build/plugins/resolve-css-imports.ts
T

21 lines
747 B
TypeScript

import { readFileSync } from 'node:fs';
import { dirname, resolve } from 'node:path';
/** Resolves `@import` directives in CSS content, inlining referenced files. */
export function resolveImports(content: string, baseDir: string, skinsDir: string): string {
return content.replace(/@import\s+['"]([^'"]+)['"]\s*;/g, (match, importPath: string) => {
let file: string;
if (importPath.startsWith('@videojs/skins/')) {
file = resolve(skinsDir, importPath.replace('@videojs/skins/', ''));
} else if (importPath.startsWith('.')) {
file = resolve(baseDir, importPath);
} else {
return match;
}
const nested = readFileSync(file, 'utf-8');
return resolveImports(nested, dirname(file), skinsDir);
});
}