index.ts 800 B

12345678910111213141516171819202122232425262728
  1. import { createFilter } from '@rollup/pluginutils'
  2. import type { Plugin } from 'vite'
  3. import { resolveOptions } from './options'
  4. import { createMarkdown } from './markdown'
  5. import type { Options } from './type'
  6. function VitePluginReactMarkdown(useOptions: Options = {}): Plugin {
  7. const options = resolveOptions(useOptions)
  8. const markdownToReact = createMarkdown(options)
  9. const filter = createFilter(
  10. useOptions.include || /\.md$/,
  11. useOptions.exclude,
  12. )
  13. return {
  14. name: 'vite-plugin-react-markdown',
  15. enforce: 'pre',
  16. async transform(raw: string, id: string) {
  17. if (!filter(id))
  18. return
  19. try {
  20. return await markdownToReact(raw, id)
  21. }
  22. catch (e: unknown) { console.error(e) }
  23. },
  24. } as const
  25. }
  26. export default VitePluginReactMarkdown