QingWei-Li / vue-markdown-loader

📇 Convert Markdown file to Vue2.0 component.
704 stars 161 forks source link

md 插入 script 解析error #59

Closed cleverboy32 closed 5 years ago

cleverboy32 commented 5 years ago

v-cli3

chainWebpack: config => {
        config.module
        .rule('md')
        .test(/\.md$/)
        .use('vue-loader')
        .loader('vue-loader')
        .end()
        .use("vue-markdown-loader")
        .loader('vue-markdown-loader/lib/markdown-compiler')
        .options({
            raw: true,
            preventExtract: false,
            use: [
                [require('markdown-it-anchor'), {
                    level: 2,
                    slugify: slugify,
                    permalink: true,
                    permalinkBefore: true
                }],
                [require('markdown-it-container'), 'demo', {
                    validate: function (params) {
                        return params.trim().match(/^demo\s*(.*)$/)
                    },
                    render: function (tokens, idx) {
                        var m = tokens[idx].info.trim().match(/^demo\s*(.*)$/);

                        if (tokens[idx].nesting === 1) {
                            var title = (m && m.length > 1) ? m[1] : '';
                            var desc = '';
                            var content = tokens[idx + 1].content;

                            if (!content) {
                                content = tokens[idx + 4].content;
                                desc = tokens[idx + 2].content;
                                // 移除描述,防止被添加到代码块
                                tokens[idx + 2].children = [];
                            }

                            var html = _convert(_strip(content, [])).replace(/(<[^>]*)=""(?=.*>)/g, '$1');

                            return `<demo-block>
                                    <div slot="source">${html}</div>
                                    <div slot="title">${title}</div>
                                    <div slot="desc">${md.renderInline(desc)}</div>
                                    <div slot="highlight">`;
                        }
                        return '</div></demo-block>\n';
                    }
                }]
            ]
       })
}

md 文件 不加入 script 标签能被解析, 加入了之后仿佛按照 vue 文件去解析了, 就报错。

cleverboy32 commented 5 years ago

奥 没关 eslint 搞的。