diff --git a/addons/docs/src/frameworks/vue/preset.ts b/addons/docs/src/frameworks/vue/preset.ts index 9613eaa38b62..5650c588cc67 100644 --- a/addons/docs/src/frameworks/vue/preset.ts +++ b/addons/docs/src/frameworks/vue/preset.ts @@ -1,4 +1,18 @@ -export function webpackFinal(webpackConfig: any = {}, options: any = {}) { +import type { Options } from '@storybook/core-common'; + +export function webpackFinal(webpackConfig: any = {}, options: Options) { + let vueDocgenOptions = {}; + + options.presetsList?.forEach((preset) => { + if (preset.name.includes('addon-docs') && preset.options.vueDocgenOptions) { + const appendableOptions = preset.options.vueDocgenOptions; + vueDocgenOptions = { + ...vueDocgenOptions, + ...appendableOptions, + }; + } + }); + webpackConfig.module.rules.push({ test: /\.vue$/, loader: require.resolve('vue-docgen-loader', { paths: [require.resolve('@storybook/vue')] }), @@ -6,7 +20,7 @@ export function webpackFinal(webpackConfig: any = {}, options: any = {}) { options: { docgenOptions: { alias: webpackConfig.resolve.alias, - ...options.vueDocgenOptions, + ...vueDocgenOptions, }, }, }); diff --git a/addons/docs/src/frameworks/vue3/preset.ts b/addons/docs/src/frameworks/vue3/preset.ts index dd03fb874d00..c8e044caf8e2 100644 --- a/addons/docs/src/frameworks/vue3/preset.ts +++ b/addons/docs/src/frameworks/vue3/preset.ts @@ -1,4 +1,18 @@ -export function webpackFinal(webpackConfig: any = {}, options: any = {}) { +import type { Options } from '@storybook/core-common'; + +export function webpackFinal(webpackConfig: any = {}, options: Options) { + let vueDocgenOptions = {}; + + options.presetsList?.forEach((preset) => { + if (preset.name.includes('addon-docs') && preset.options.vueDocgenOptions) { + const appendableOptions = preset.options.vueDocgenOptions; + vueDocgenOptions = { + ...vueDocgenOptions, + ...appendableOptions, + }; + } + }); + webpackConfig.module.rules.push({ test: /\.vue$/, loader: require.resolve('vue-docgen-loader', { paths: [require.resolve('@storybook/vue3')] }), @@ -6,7 +20,7 @@ export function webpackFinal(webpackConfig: any = {}, options: any = {}) { options: { docgenOptions: { alias: webpackConfig.resolve.alias, - ...options.vueDocgenOptions, + ...vueDocgenOptions, }, }, });