1. 在根目录下新建 vite.config.js

  1. import fs from 'fs';
  2. import {baseParse} from '@vue/compiler-core';
  3. export default {
  4. vueCustomBlockTransforms: {
  5. demo: (options) => {
  6. const {code, path} = options;
  7. const file = fs.readFileSync(path).toString();
  8. const parsed = baseParse(file).children.find(n => n.tag === 'demo');
  9. const title = parsed.children[0].content;
  10. const main = file.split(parsed.loc.source).join('').trim();
  11. return `export default function (Component) {
  12. Component.__sourceCode = ${
  13. JSON.stringify(main)
  14. }
  15. Component.__sourceCodeTitle = ${JSON.stringify(title)}
  16. }`.trim();
  17. }
  18. }
  19. };

2. 在文件中使用 demo 组件

  1. <demo>
  2. 显示源代码 // __sourceCodeTitle 属性的值
  3. </demo>