misskey/packages/frontend/.storybook/changes.ts

42 lines
1.0 KiB
TypeScript

import fs from "node:fs/promises";
import path from "node:path";
import micromatch from "micromatch";
fs.readFile(
path.resolve(__dirname, "../storybook-static/preview-stats.json")
).then((buffer) => {
const stats = JSON.parse(buffer.toString());
const modules = new Set(
process.argv.slice(2).map((arg) => path.relative(path.resolve(__dirname, ".."), path.resolve(__dirname, "../../..", arg)))
);
if (
micromatch(Array.from(modules), [
"../../assets/**",
"../../fluent-emojis/**",
"../../locales/**",
"../../misskey-assets/**",
"assets/**",
"public/**",
"../../pnpm-lock.yaml",
]).length
) {
return;
}
for (;;) {
const oldSize = modules.size;
for (const module of Array.from(modules)) {
if (stats.modules[module]) {
for (const reason of stats.modules[module].reasons) {
modules.add(reason.moduleName);
}
}
}
if (modules.size === oldSize) {
break;
}
}
for (const file of Array.from(modules)) {
process.stdout.write(` --only-story-files ${path.resolve(__dirname, "..", file)}`);
}
});