From 4114c4dc79a346f583bd4858b1db558b93c985af Mon Sep 17 00:00:00 2001 From: Zeke Lu Date: Sun, 10 Nov 2024 19:36:10 +0800 Subject: [PATCH 1/2] bundle the extension with esbuild to reduce the size --- .gitignore | 6 +- .vscodeignore | 17 +- esbuild.js | 56 ++++ package-lock.json | 437 ++++++++++++++++++++++++++++++- package.json | 7 +- src/compile.js | 27 -- extension.js => src/extension.js | 0 7 files changed, 496 insertions(+), 54 deletions(-) create mode 100644 esbuild.js delete mode 100644 src/compile.js rename extension.js => src/extension.js (100%) diff --git a/.gitignore b/.gitignore index 1ec090c..bcb5813 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,5 @@ +node_modules/ .history .vscode-test -node_modules -work/** *.vsix -*.bat -.eslintrc.json +/extension.js diff --git a/.vscodeignore b/.vscodeignore index edc0e82..bef2a92 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -1,10 +1,11 @@ -.vscode/** -typings/** -test/** +.github/ +.vscode/ +node_modules/ +sample/ +test/ .gitignore -jsconfig.json *.vsix -work/** -*.bat -.eslintrc.json -sample/** \ No newline at end of file +esbuild.js +extension.js.map +jsconfig.json +src/extension.js diff --git a/esbuild.js b/esbuild.js new file mode 100644 index 0000000..dfb5f30 --- /dev/null +++ b/esbuild.js @@ -0,0 +1,56 @@ +const esbuild = require('esbuild'); + +const production = process.argv.includes('--production'); +const watch = process.argv.includes('--watch'); + +async function main() { + const ctx = await esbuild.context({ + entryPoints: ['src/extension.js'], + bundle: true, + format: 'cjs', + minify: production, + sourcemap: !production, + sourcesContent: false, + platform: 'node', + outfile: 'extension.js', + external: ['vscode'], + logLevel: 'silent', + plugins: [ + /* add to the end of plugins array */ + esbuildProblemMatcherPlugin, + ], + }); + if (watch) { + await ctx.watch(); + } else { + await ctx.rebuild(); + await ctx.dispose(); + } +} + +/** + * @type {import('esbuild').Plugin} + */ +const esbuildProblemMatcherPlugin = { + name: 'esbuild-problem-matcher', + + setup(build) { + build.onStart(() => { + console.log('[watch] build started'); + }); + build.onEnd((result) => { + result.errors.forEach(({ text, location }) => { + console.error(`✘ [ERROR] ${text}`); + console.error( + ` ${location.file}:${location.line}:${location.column}:` + ); + }); + console.log('[watch] build finished'); + }); + }, +}; + +main().catch((e) => { + console.error(e); + process.exit(1); +}); diff --git a/package-lock.json b/package-lock.json index fda60a4..eb75cc5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,15 +26,399 @@ "rimraf": "^3.0.2" }, "devDependencies": { + "esbuild": "^0.24.0", "glob": "^7.1.6", "mocha": "^7.1.1", - "removeNPMAbsolutePaths": "^2.0.0", "vscode-test": "^1.3.0" }, "engines": { "vscode": "^1.0.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@types/mime-types": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.0.tgz", @@ -666,6 +1050,45 @@ "es6-promise": "^4.0.3" } }, + "node_modules/esbuild": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" + } + }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1960,18 +2383,6 @@ "node": ">= 8" } }, - "node_modules/removeNPMAbsolutePaths": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/removeNPMAbsolutePaths/-/removeNPMAbsolutePaths-2.0.0.tgz", - "integrity": "sha512-Hea7U6iJcD0NE/aqBqxBMPKeKaxjqMNyTTajmH2dH9hhafJ9Tem5r4UeJK8+BdE1MK9lqoOYqNM0Sq9rl1OIbQ==", - "dev": true, - "bin": { - "removeNPMAbsolutePaths": "bin/removeNPMAbsolutePaths" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", diff --git a/package.json b/package.json index de45a38..689feda 100644 --- a/package.json +++ b/package.json @@ -480,13 +480,16 @@ } }, "scripts": { - "vscode:prepublish": "node ./src/compile", + "compile": "node esbuild.js", + "watch": "node esbuild.js --watch", + "package": "node esbuild.js --production", + "vscode:prepublish": "npm run package", "test": "node ./test/runTest.js" }, "devDependencies": { + "esbuild": "^0.24.0", "glob": "^7.1.6", "mocha": "^7.1.1", - "removeNPMAbsolutePaths": "^2.0.0", "vscode-test": "^1.3.0" }, "dependencies": { diff --git a/src/compile.js b/src/compile.js deleted file mode 100644 index 4eb395d..0000000 --- a/src/compile.js +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env node - -var fs = require('fs'); -var path = require('path'); -var rimraf = require('rimraf') -var removeNPMAbsolutePaths = require('removeNPMAbsolutePaths'); - -// Delete the unnecessary files in order to reduce the size of the package -console.log('delete file...'); -deleteFile(path.join(__dirname, '..', 'node_modules', 'emoji-images', 'json')); -deleteFile(path.join(__dirname, '..', 'node_modules', 'puppeteer-core', '.local-chromium')); - -removeNPMAbsolutePaths(path.join(__dirname, '..', 'node_modules'), { force: true, fields: ['_where', '_args']}) - .then(results => results.forEach(result => { - // Print only information about files that couldn't be processed - if (!result.success) { - console.log(result.err.message); - } - })) - .catch(err => console.log(err.message)); - -function deleteFile (dir) { - rimraf(dir, function(err) { - if (err) throw err; - console.log(dir); - }); -} diff --git a/extension.js b/src/extension.js similarity index 100% rename from extension.js rename to src/extension.js From 3b565ef7b83f2e6b34b36ef39c149bc7af07f150 Mon Sep 17 00:00:00 2001 From: Zeke Lu Date: Tue, 29 Oct 2024 13:59:27 +0800 Subject: [PATCH 2/2] use vscode-markdown-it-katex to render KaTex --- README.ja.md | 16 ++++++++++++++++ README.md | 15 +++++++++++++++ images/katex.png | Bin 0 -> 3040 bytes package-lock.json | 32 ++++++++++++++++++++++++++++++++ package.json | 1 + src/extension.js | 3 +++ template/template.html | 1 + 7 files changed, 68 insertions(+) create mode 100644 images/katex.png diff --git a/README.ja.md b/README.ja.md index 42cbe3c..0e005de 100644 --- a/README.ja.md +++ b/README.ja.md @@ -36,6 +36,7 @@ * [markdown-it-checkbox](https://github.com/mcecot/markdown-it-checkbox) * [markdown-it-container](https://github.com/markdown-it/markdown-it-container) * [markdown-it-include](https://github.com/camelaissani/markdown-it-include) +* [markdown-it-katex](https://github.com/microsoft/vscode-markdown-it-katex) * [PlantUML](https://plantuml.com/) * [markdown-it-plantuml](https://github.com/gmunguia/markdown-it-plantuml) * [mermaid](https://mermaid-js.github.io/mermaid/) @@ -105,6 +106,21 @@ Content of plugins/README.md Content of CHANGELOG.md ``` +### markdown-it-katex + +INPUT + +``` +$$ +\sqrt{3x-1}+(1+x)^2 +$$ +``` + +OUTPUT + +![katex](images/katex.png) + + ### mermaid INPUT diff --git a/README.md b/README.md index 763abd1..cbd4f55 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ Supports the following features * [markdown-it-checkbox](https://github.com/mcecot/markdown-it-checkbox) * [markdown-it-container](https://github.com/markdown-it/markdown-it-container) * [markdown-it-include](https://github.com/camelaissani/markdown-it-include) +* [markdown-it-katex](https://github.com/microsoft/vscode-markdown-it-katex) * [PlantUML](https://plantuml.com/) * [markdown-it-plantuml](https://github.com/gmunguia/markdown-it-plantuml) * [mermaid](https://mermaid-js.github.io/mermaid/) @@ -107,6 +108,20 @@ Content of plugins/README.md Content of CHANGELOG.md ``` +### markdown-it-katex + +INPUT + +``` +$$ +\sqrt{3x-1}+(1+x)^2 +$$ +``` + +OUTPUT + +![katex](images/katex.png) + ### mermaid INPUT diff --git a/images/katex.png b/images/katex.png new file mode 100644 index 0000000000000000000000000000000000000000..d3836df63d0d0b765bd158c63ebf50a425173e4c GIT binary patch literal 3040 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 CBS60Z literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index eb75cc5..2d28b03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.5.0", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { + "@vscode/markdown-it-katex": "^1.1.0", "cheerio": "^0.20.0", "emoji-images": "^0.1.1", "gray-matter": "^4.0.2", @@ -424,6 +425,14 @@ "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.0.tgz", "integrity": "sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM=" }, + "node_modules/@vscode/markdown-it-katex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@vscode/markdown-it-katex/-/markdown-it-katex-1.1.0.tgz", + "integrity": "sha512-9cF2eJpsJOEs2V1cCAoJW/boKz9GQQLvZhNvI030K90z6ZE9lRGc9hDVvKut8zdFO2ObjwylPXXXVYvTdP2O2Q==", + "dependencies": { + "katex": "^0.16.4" + } + }, "node_modules/abab": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", @@ -779,6 +788,14 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1804,6 +1821,21 @@ "verror": "1.10.0" } }, + "node_modules/katex": { + "version": "0.16.11", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.11.tgz", + "integrity": "sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", diff --git a/package.json b/package.json index 689feda..39feea9 100644 --- a/package.json +++ b/package.json @@ -493,6 +493,7 @@ "vscode-test": "^1.3.0" }, "dependencies": { + "@vscode/markdown-it-katex": "^1.1.0", "cheerio": "^0.20.0", "emoji-images": "^0.1.1", "gray-matter": "^4.0.2", diff --git a/src/extension.js b/src/extension.js index e0e28a2..c06755c 100644 --- a/src/extension.js +++ b/src/extension.js @@ -219,6 +219,9 @@ function convertMarkdownToHtml(filename, type, text) { // checkbox md.use(require('markdown-it-checkbox')); + // katex + md.use(require('@vscode/markdown-it-katex').default); + // emoji var emoji_f = setBooleanValue(matterParts.data.emoji, vscode.workspace.getConfiguration('markdown-pdf')['emoji']); if (emoji_f) { diff --git a/template/template.html b/template/template.html index 95bd6af..3cc0a19 100644 --- a/template/template.html +++ b/template/template.html @@ -4,6 +4,7 @@ {{{title}}} {{{style}}} + {{{mermaid}}}