23 lines
		
	
	
		
			655 B
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			655 B
		
	
	
	
		
			TypeScript
		
	
	
import { createMarkdownToVueRenderFn } from './markdownToVue';
 | 
						|
import type { MarkdownOptions } from './markdown/markdown';
 | 
						|
import type { Plugin } from 'vite';
 | 
						|
 | 
						|
interface Options {
 | 
						|
  root?: string;
 | 
						|
  markdown?: MarkdownOptions;
 | 
						|
}
 | 
						|
 | 
						|
export default (options: Options = {}): Plugin => {
 | 
						|
  const { root, markdown } = options;
 | 
						|
  const markdownToVue = createMarkdownToVueRenderFn(root, markdown);
 | 
						|
  return {
 | 
						|
    name: 'mdToVue',
 | 
						|
    async transform(code, id) {
 | 
						|
      if (id.endsWith('.md')) {
 | 
						|
        // transform .md files into vueSrc so plugin-vue can handle it
 | 
						|
        return { code: (await markdownToVue(code, id)).vueSrc, map: null };
 | 
						|
      }
 | 
						|
    },
 | 
						|
  };
 | 
						|
};
 |