Skip to content

Commit c3bf12b

Browse files
committed
feat: load main and preview storybook config from nuxt config
1 parent d1bd15a commit c3bf12b

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

packages/nuxt-module/src/config.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { resolve } from 'node:path'
2+
3+
export function generateConfigFiles(configDir: string) {
4+
const isTsProject = isTypescriptProject()
5+
const extension = isTsProject ? '.ts' : '.js'
6+
const mainFile = resolve(configDir, 'main' + extension)
7+
const previewFile = resolve(configDir, 'preview' + extension)
8+
}
9+
10+
function generateMainConfig({ useTypescript }) {
11+
const preamble = useTypescript
12+
? ``
13+
: `
14+
/** @type { import('storybook-vue').StorybookConfig } */
15+
const config = {
16+
`
17+
return (
18+
preamble +
19+
`
20+
stories: [
21+
'../components/**/*.mdx',
22+
'../components/**/*.stories.@(js|jsx|ts|tsx|mdx)',
23+
],
24+
addons: [
25+
'@storybook/addon-links',
26+
'@storybook/addon-essentials',
27+
'@chromatic-com/storybook',
28+
],
29+
framework: {
30+
name: '@storybook-vue/nuxt',
31+
options: {},
32+
},
33+
docs: {
34+
autodocs: 'tag',
35+
},
36+
}
37+
export default config
38+
`
39+
)
40+
}
41+
42+
function isTypescriptProject() {
43+
return true
44+
}

packages/nuxt-module/src/storybook.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import {
1010
} from '@storybook/core-common'
1111
import { buildDevStandalone, withTelemetry } from '@storybook/core-server'
1212
import storybookPackageJson from '@storybook/core-server/package.json'
13+
import { generateConfigFiles } from './config'
14+
import fs from 'node:fs'
1315

1416
const buildLogger = logger.withTag('build')
1517

@@ -51,10 +53,15 @@ export async function setupStorybook(options: ModuleOptions, nuxt: Nuxt) {
5153
})
5254

5355
const projectDir = resolve(nuxt.options.rootDir)
56+
let configDir = resolve(projectDir, './.storybook')
57+
if (!fs.existsSync(configDir)) {
58+
configDir = resolve(nuxt.options.buildDir, './.storybook')
59+
generateConfigFiles(configDir)
60+
}
5461

5562
const storybookOptions = {
5663
port: storybookServerPort,
57-
configDir: resolve(projectDir, './.storybook'),
64+
configDir: configDir,
5865
configType: 'DEVELOPMENT',
5966
cache: storybookCache,
6067
packageJson: storybookPackageJson as PackageJson,

0 commit comments

Comments
 (0)