Skip to main content
Glama
main.ts1.81 kB
import type { StorybookConfig } from '@storybook/react-vite'; import { existsSync } from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; import { mergeConfig } from 'vite'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const config: StorybookConfig = { stories: ['../src/stories/Introduction.mdx', '../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], addons: ['@storybook/addon-links', '@storybook/addon-docs', '@vueless/storybook-dark-mode'], staticDirs: ['../public'], framework: { name: '@storybook/react-vite', options: {}, }, async viteFinal(inputConfig, { configType }) { let config = inputConfig; if (configType === 'PRODUCTION') { config = mergeConfig(config, { // plugins: [turbosnap({ rootDir: config.root ?? process.cwd() })], }); } else if (configType === 'DEVELOPMENT') { const aliasEntries: Record<string, string> = { '@medplum/core': path.resolve(import.meta.dirname, '../../core/src'), '@medplum/react-hooks': path.resolve(import.meta.dirname, '../../react-hooks/src'), '@medplum/mock': path.resolve(import.meta.dirname, '../../mock/src'), '@medplum/fhir-router': path.resolve(import.meta.dirname, '../../fhir-router/src'), '@medplum/definitions': path.resolve(import.meta.dirname, '../../definitions/src'), }; // Only add aliases for paths that exist const alias = Object.fromEntries(Object.entries(aliasEntries).filter(([, aliasPath]) => existsSync(aliasPath))); config = mergeConfig(config, { resolve: { alias, }, server: { fs: { allow: [path.resolve(__dirname, '../..')], }, }, }); } return config; }, }; export default config;

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/medplum/medplum'

If you have feedback or need assistance with the MCP directory API, please join our Discord server