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

54 lines
1.2 KiB
TypeScript

import fs from 'node:fs/promises';
import path from 'node:path';
import micromatch from 'micromatch';
import main from './main';
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;
}
}
const stories = micromatch(
Array.from(modules),
main.stories.map((story) => path.resolve(__dirname, story))
);
for (const story of stories) {
process.stdout.write(` --only-story-files ${story}`);
}
});