src/directive/highlight.js (24 lines of code) (raw):
import hljs from 'highlight.js/lib/highlight';
import javascript from 'highlight.js/lib/languages/javascript';
import typescript from 'highlight.js/lib/languages/typescript';
import xml from 'highlight.js/lib/languages/xml';
hljs.registerLanguage('javascript', javascript);
hljs.registerLanguage('typescript', typescript);
hljs.registerLanguage('xml', xml);
import 'highlight.js/styles/github.css';
// import 'highlight.js/styles/monokai.css';
import Vue from 'vue';
function doHighlight(el) {
el.querySelectorAll('pre code').forEach((block) => {
if (!block.classList.contains('hljs')) {
hljs.highlightBlock(block);
}
});
}
Vue.directive('highlight', {
inserted(el) {
doHighlight(el);
},
update(el) {
doHighlight(el);
}
});