ci(#10336): use TurboSnap (#10494)

* ci(#10336): use TurboSnap

* build: fix version

* ci(#10336): update build dir

* chore(#10336): fire changes

* chore: stabilize icon width on `PageHeader`

* chore: fire changes

* ci: invalid ignore

* ci: trace logs

* chore: debug

* revert: debug

This reverts commit 2329165e25.

* chore: do not reuse build dir

* build: scripts

* ci: tweak

* revert: re-revert debug

This reverts commit 596ef05d9e.

* chore: detect changes manually

* fix: syntax

* ci: do not use only-changed

* ci: fix command

* revert: re-re-revert debug

This reverts commit b027170d75.

* ci: use build dir

* revert: re-re-re-revert debug

This reverts commit 529ab126ed.

* ci: fix path

* revert: re-re-re-re-revert debug

This reverts commit 0b0c0b9ea4.

* ci: fix typo

* ci: only show story files

* revert: re-re-re-re-re-revert debug

This reverts commit 9f5b88df32.

* ci: skip when no stories found

* ci: use skip

* revert: re-re-re-re-re-re-revert debug

This reverts commit 0df4bdc30b.

* ci: fix micromatch version

* revert: re-re-re-re-re-re-re-revert debug

This reverts commit 63063b02bb.

* revert: re-re-re-re-re-re-re-re-revert debug

This reverts commit 01d9669e2a.

* chore: pin tabler icon width globally

* ci: notify when Chromatic skips

* ci: fix endpoint

---------

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
This commit is contained in:
Acid Chicken (硫酸鶏)
2023-04-07 20:34:23 +09:00
committed by GitHub
parent 191ed3c814
commit abda3b6c8c
11 changed files with 178 additions and 183 deletions

View File

@@ -1,9 +1,7 @@
# (cd path/to/frontend; pnpm tsc -p .storybook)
# (cd path/to/frontend; node .storybook/generate.js)
/changes.js
/generate.js
# (cd path/to/frontend; node .storybook/preload-locale.js)
/preload-locale.js
/locale.ts
# (cd path/to/frontend; node .storybook/preload-theme.js)
/main.js
/preload-theme.js
/themes.ts

View File

@@ -0,0 +1,80 @@
import fs from 'node:fs/promises';
import path from 'node:path';
import micromatch from 'micromatch';
import main from './main';
interface Stats {
readonly modules: readonly {
readonly id: string;
readonly name: string;
readonly reasons: readonly {
readonly moduleName: string;
}[];
}[];
}
fs.readFile(
path.resolve(__dirname, '../storybook-static/preview-stats.json')
).then((buffer) => {
const stats: Stats = JSON.parse(buffer.toString());
const keys = new Set(stats.modules.map((stat) => stat.id));
const map = new Map(
Array.from(keys, (key) => [
key,
new Set(
stats.modules
.filter((stat) => stat.id === key)
.flatMap((stat) => stat.reasons)
.map((reason) => reason.moduleName)
),
])
);
const modules = new Set(
process.argv
.slice(2)
.map((arg) =>
path.relative(
path.resolve(__dirname, '..'),
path.resolve(__dirname, '../../..', arg)
)
)
.map((path) => (path.startsWith('.') ? path : `./${path}`))
);
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 (map.has(module)) {
for (const dependency of Array.from(map.get(module)!)) {
modules.add(dependency);
}
}
}
if (modules.size === oldSize) {
break;
}
}
const stories = micromatch(
Array.from(modules),
main.stories.map((story) => `./${path.relative('..', story)}`)
);
if (stories.length) {
for (const story of stories) {
process.stdout.write(` --only-story-files ${story}`);
}
} else {
process.stdout.write(` --skip`);
}
});

View File

@@ -1,6 +1,7 @@
import { resolve } from 'node:path';
import type { StorybookConfig } from '@storybook/vue3-vite';
import { mergeConfig } from 'vite';
import turbosnap from 'vite-plugin-turbosnap';
const config = {
stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
addons: [
@@ -20,8 +21,13 @@ const config = {
core: {
disableTelemetry: true,
},
async viteFinal(config, options) {
async viteFinal(config) {
return mergeConfig(config, {
plugins: [
turbosnap({
rootDir: config.root ?? process.cwd(),
}),
],
build: {
target: [
'chrome108',

View File

@@ -18,5 +18,10 @@
"jsx": "react",
"jsxFactory": "h"
},
"files": ["./generate.tsx", "./preload-locale.ts", "./preload-theme.ts"]
"files": [
"./changes.ts",
"./generate.tsx",
"./preload-locale.ts",
"./preload-theme.ts"
]
}