snapshot of https://github.com/dream-num/univer.git (dev, 2026-09-16; blobs > 131072B omitted)
Some checks failed
📦 Build / build (push) Has been cancelled
🧪 CI Test / test shard (1/4) (push) Has been cancelled
🧪 CI Test / test shard (2/4) (push) Has been cancelled
🧪 CI Test / test shard (3/4) (push) Has been cancelled
🧪 CI Test / test shard (4/4) (push) Has been cancelled
🧪 CI Test / test (push) Has been cancelled
🧪 CI Test / eslint (push) Has been cancelled
🧪 CI Test / typecheck (push) Has been cancelled
🔫 Sync to Pro / dispatch-sync (push) Has been cancelled
🔮 Sync Mirror / sync (push) Has been cancelled
Some checks failed
📦 Build / build (push) Has been cancelled
🧪 CI Test / test shard (1/4) (push) Has been cancelled
🧪 CI Test / test shard (2/4) (push) Has been cancelled
🧪 CI Test / test shard (3/4) (push) Has been cancelled
🧪 CI Test / test shard (4/4) (push) Has been cancelled
🧪 CI Test / test (push) Has been cancelled
🧪 CI Test / eslint (push) Has been cancelled
🧪 CI Test / typecheck (push) Has been cancelled
🔫 Sync to Pro / dispatch-sync (push) Has been cancelled
🔮 Sync Mirror / sync (push) Has been cancelled
This commit is contained in:
58
common/shared/preset-build/style.ts
Normal file
58
common/shared/preset-build/style.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
import type { IPresetPackageJson } from './types.ts';
|
||||
import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
||||
import path from 'node:path';
|
||||
|
||||
function getDependencyDir(packageDir: string, dependencyName: string) {
|
||||
return path.join(packageDir, 'node_modules', dependencyName);
|
||||
}
|
||||
|
||||
function getBuiltStyleDependencyCssFiles(packageDir: string, packageJson: IPresetPackageJson) {
|
||||
return Object.keys(packageJson.dependencies ?? {})
|
||||
.flatMap((dependencyName) => {
|
||||
if (!dependencyName.startsWith('@univerjs')) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const dependencyDir = getDependencyDir(packageDir, dependencyName);
|
||||
const sourceGlobalCss = path.join(dependencyDir, 'src/global.css');
|
||||
const builtCss = path.join(dependencyDir, 'lib/index.css');
|
||||
|
||||
if (!existsSync(sourceGlobalCss)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
if (!existsSync(builtCss)) {
|
||||
throw new Error(`Missing built CSS for ${dependencyName}. Build dependency packages before building preset CSS.`);
|
||||
}
|
||||
|
||||
return [builtCss];
|
||||
});
|
||||
}
|
||||
|
||||
function writePresetCss(packageDir: string, cssFiles: string[]) {
|
||||
const outputFile = path.join(packageDir, 'lib/index.css');
|
||||
|
||||
mkdirSync(path.dirname(outputFile), { recursive: true });
|
||||
|
||||
const content = cssFiles
|
||||
.map((cssFile) => readFileSync(cssFile, 'utf8').trimEnd())
|
||||
.filter(Boolean)
|
||||
.join('\n');
|
||||
|
||||
writeFileSync(outputFile, `${content}\n`);
|
||||
}
|
||||
|
||||
export async function buildPresetStyles(options: {
|
||||
packageDir: string;
|
||||
packageJson: IPresetPackageJson;
|
||||
}) {
|
||||
const { packageDir, packageJson } = options;
|
||||
const cssFiles = getBuiltStyleDependencyCssFiles(packageDir, packageJson);
|
||||
|
||||
if (cssFiles.length === 0) {
|
||||
rmSync(path.join(packageDir, 'lib/index.css'), { force: true });
|
||||
return;
|
||||
}
|
||||
|
||||
writePresetCss(packageDir, cssFiles);
|
||||
}
|
||||
Reference in New Issue
Block a user