From 32962ae0be9c17898830a404e211d2165365aabd Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Sun, 4 Jun 2023 12:25:36 +0800 Subject: [PATCH] Server: Fix yaml file support --- code/lib/cli/src/sandbox-templates.ts | 1 - code/presets/server-webpack/src/index.ts | 5 ++++- code/presets/server-webpack/src/loader.ts | 3 ++- code/renderers/server/package.json | 3 ++- code/renderers/server/src/preset.ts | 11 +++++++---- code/yarn.lock | 3 ++- 6 files changed, 17 insertions(+), 9 deletions(-) diff --git a/code/lib/cli/src/sandbox-templates.ts b/code/lib/cli/src/sandbox-templates.ts index 20032b2db74b..832c80e96523 100644 --- a/code/lib/cli/src/sandbox-templates.ts +++ b/code/lib/cli/src/sandbox-templates.ts @@ -486,7 +486,6 @@ const internalTemplates = { builder: '@storybook/builder-webpack5', }, isInternal: true, - inDevelopment: true, }, // 'internal/pnp': { // ...baseTemplates['cra/default-ts'], diff --git a/code/presets/server-webpack/src/index.ts b/code/presets/server-webpack/src/index.ts index d37d8ee34345..eb5aaf1d04de 100644 --- a/code/presets/server-webpack/src/index.ts +++ b/code/presets/server-webpack/src/index.ts @@ -16,7 +16,10 @@ export const webpack: StorybookConfig['webpack'] = (config) => { test: /\.stories\.ya?ml/, use: [ require.resolve('@storybook/preset-server-webpack/dist/loader'), - require.resolve('yaml-loader'), + { + loader: require.resolve('yaml-loader'), + options: { asJSON: true }, + }, ], }, ]; diff --git a/code/presets/server-webpack/src/loader.ts b/code/presets/server-webpack/src/loader.ts index 1dd4b6b155ef..dc0ebba43d6e 100644 --- a/code/presets/server-webpack/src/loader.ts +++ b/code/presets/server-webpack/src/loader.ts @@ -5,7 +5,8 @@ export default (content: string) => { const after = compileCsfModule(JSON.parse(content)); return after; } catch (e) { - // + // for debugging + console.log(content, e); } return content; }; diff --git a/code/renderers/server/package.json b/code/renderers/server/package.json index 358b5244e1a3..d98993f11fe0 100644 --- a/code/renderers/server/package.json +++ b/code/renderers/server/package.json @@ -61,7 +61,8 @@ "@storybook/types": "7.1.0-alpha.26", "@types/fs-extra": "^11.0.1", "fs-extra": "^11.1.0", - "ts-dedent": "^2.0.0" + "ts-dedent": "^2.0.0", + "yaml": "^2.3.1" }, "devDependencies": { "typescript": "~4.9.3" diff --git a/code/renderers/server/src/preset.ts b/code/renderers/server/src/preset.ts index fced651731c3..50a1827c14ac 100644 --- a/code/renderers/server/src/preset.ts +++ b/code/renderers/server/src/preset.ts @@ -1,11 +1,14 @@ import fs from 'fs-extra'; +import yaml from 'yaml'; import { toId } from '@storybook/csf'; import type { StaticMeta } from '@storybook/csf-tools'; import type { IndexerOptions, IndexedStory, StoryIndexer } from '@storybook/types'; export const storyIndexers = (indexers: StoryIndexer[] | null) => { - const jsonIndexer = async (fileName: string, opts: IndexerOptions) => { - const json = await fs.readJson(fileName, 'utf-8'); + const serverIndexer = async (fileName: string, opts: IndexerOptions) => { + const json = fileName.endsWith('.json') + ? await fs.readJson(fileName, 'utf-8') + : yaml.parse((await fs.readFile(fileName, 'utf-8')).toString()); const meta: StaticMeta = { title: json.title, }; @@ -25,8 +28,8 @@ export const storyIndexers = (indexers: StoryIndexer[] | null) => { }; return [ { - test: /(stories|story)\.json$/, - indexer: jsonIndexer, + test: /(stories|story)\.(json|ya?ml)$/, + indexer: serverIndexer, }, ...(indexers || []), ]; diff --git a/code/yarn.lock b/code/yarn.lock index 267a38ca50bc..b7c9bedb145f 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -7499,6 +7499,7 @@ __metadata: fs-extra: ^11.1.0 ts-dedent: ^2.0.0 typescript: ~4.9.3 + yaml: ^2.3.1 languageName: unknown linkType: soft @@ -32376,7 +32377,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.0.0": +"yaml@npm:^2.0.0, yaml@npm:^2.3.1": version: 2.3.1 resolution: "yaml@npm:2.3.1" checksum: ed4c21a907fb1cd60a25177612fa46d95064a144623d269199817908475fe85bef20fb17406e3bdc175351b6488056a6f84beb7836e8c262646546a0220188e3