Files
vant/packages/vant-cli/src/compiler/compile-style.ts
T

43 lines
1.2 KiB
TypeScript

import { parse } from 'node:path';
import fse from 'fs-extra';
import { getVantConfig, replaceExt } from '../common/index.js';
import { compileCss } from './compile-css.js';
import { compileLess } from './compile-less.js';
import { compileSass } from './compile-sass.js';
import { consola } from '../common/logger.js';
const { readFileSync, writeFileSync, removeSync } = fse;
async function compileFile(filePath: string) {
const parsedPath = parse(filePath);
try {
if (parsedPath.ext === '.less') {
const source = await compileLess(filePath);
return await compileCss(source);
}
if (parsedPath.ext === '.scss') {
const source = await compileSass(filePath);
return await compileCss(source);
}
const source = readFileSync(filePath, 'utf-8');
return await compileCss(source);
} catch (err) {
consola.error('Compile style failed: ' + filePath);
throw err;
}
}
export async function compileStyle(filePath: string) {
const css = await compileFile(filePath);
const vantConfig = getVantConfig();
if (vantConfig.build?.css?.removeSourceFile) {
removeSync(filePath);
}
writeFileSync(replaceExt(filePath, '.css'), css);
}