diff --git a/v1/lib/core/renderMarkdown.js b/v1/lib/core/renderMarkdown.js index 8fd17e17fb..b04321491a 100644 --- a/v1/lib/core/renderMarkdown.js +++ b/v1/lib/core/renderMarkdown.js @@ -9,19 +9,21 @@ const hljs = require('highlight.js'); const Markdown = require('remarkable'); const prismjs = require('prismjs'); const deepmerge = require('deepmerge'); - +const chalk = require('chalk'); const anchors = require('./anchors.js'); const CWD = process.cwd(); const alias = { js: 'jsx', + html: 'markup', + sh: 'bash', + md: 'markdown', }; class MarkdownRenderer { constructor() { const siteConfig = require(`${CWD}/siteConfig.js`); - let markdownOptions = { // Highlight.js expects hljs css classes on the code element. // This results in

@@ -45,14 +47,22 @@ class MarkdownRenderer {
                 siteConfig.usePrism.length > 0 &&
                 siteConfig.usePrism.indexOf(lang) !== -1)
             ) {
+              const language = alias[lang] || lang;
               try {
-                const language = alias[lang] || lang;
                 // Currently people using prismjs on Node have to individually require()
                 // every single language (https://github.com/PrismJS/prism/issues/593)
                 require(`prismjs/components/prism-${language}.min`);
                 return prismjs.highlight(str, prismjs.languages[language]);
               } catch (err) {
-                console.error(err);
+                if (err.code === 'MODULE_NOT_FOUND') {
+                  const unsupportedLanguageError = chalk.yellow(
+                    `Warning: ${chalk.red(
+                      language,
+                    )} is not supported by prismjs.` +
+                      '\nPlease refer to https://prismjs.com/#languages-list for the list of supported languages.',
+                  );
+                  console.log(unsupportedLanguageError);
+                } else console.error(err);
               }
             }
             if (hljs.getLanguage(lang)) {