用vue-loader Custom Blocks显示源代码

2021-04-11  本文已影响0人  曾祥辉

配置vite.config.ts

//vite.config.ts
import fs from 'fs';
import { baseParse } from '@vue/compiler-core';
export default {
    vueCustomBlockTransforms: {
    // 遇到demo标签就执行以下代码
        demo: (options) => {
            const { code, path } = options;
            const file = fs.readFileSync(path).toString();
      // 判断虚拟节点是否存在tag为deom的标签
            const parsed = baseParse(file).children.find((n) => n.tag === 'demo');
            const title = parsed.children[0].content;
      // 删除demo标签
            const main = file.split(parsed.loc.source).join('').trim();
      // 组件对象增加__sourceCode属性,值为源代码
            return `export default function (Component) {
        Component.__sourceCode = ${JSON.stringify(main)}
        Component.__sourceCodeTitle = ${JSON.stringify(title)}
      }`.trim();
        }
    }
};

使用

//需要展示源代码的文件
<demo>
  title
</demo>
<template>
 //code
</template>
  
<script lang="ts">
export default {
 //code
};
</script>
上一篇下一篇

猜你喜欢

热点阅读