
Security News
libxml2 Maintainer Ends Embargoed Vulnerability Reports, Citing Unsustainable Burden
Libxml2’s solo maintainer drops embargoed security fixes, highlighting the burden on unpaid volunteers who keep critical open source software secure.
markdown-it-plugin-gitbook
Advanced tools
A template for creating a markdown-it plugin.
See https://executablebooks.github.io/markdown-it-plugin-template/ for a demonstration!
As a Node module:
import MarkdownIt from "markdown-it"
import examplePlugin from "markdown-it-plugin-template"
const text = MarkdownIt().use(examplePlugin).render("*a*")
In the browser:
<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
<script src="https://cdn.jsdelivr.net/npm/markdown-it@12/dist/markdown-it.min.js"></script>
<script src="https://unpkg.com/markdown-it-plugin-template"></script>
</head>
<body>
<div id="demo"></div>
<script>
const text = window.markdownit().use(window.markdownitExample).render("*a*");
document.getElementById("demo").innerHTML = text
</script>
</body>
</html>
package.json
LICENSE
README.md
rollup.config.js
node_module
dependencies: npm install
or npm ci
(see Install a project with a clean slate).npm run format
, and linting: npm run lint:fix
.npm test
, or with coverage; npm test -- --coverage
.Now you can start to adapt the code in src/index.ts
for your plugin, starting with the markdown-it development recommendations.
Modify the test in tests/fixtures.spec.ts
, to load your plugin, then the "fixtures" in tests/fixtures
, to provide a set of potential Markdown inputs and expected HTML outputs.
On commits/PRs to the master
branch, the GH actions will trigger, running the linting, unit tests, and build tests.
Additionally setup and uncomment the codecov action in .github/workflows/ci.yml
, to provide automated CI coverage.
Finally, you can update the version of your package, e.g.: npm version patch -m "🚀 RELEASE: v%s"
, push to GitHub; git push --follow-tags
, build; npm run build
, and publish; npm publish
.
Finally, you can adapt the HTML document in docs/
, to load both markdown-it and the plugin (from unpkg), then render text from an input area.
This can be deployed by GitHub Pages.
From the markdown-it development recommendations:
Plugins should not require the
markdown-it
package as a dependency inpackage.json
.
Note, for typing, we import this package with import type
, to ensure the imports are not present in the compiled JavaScript.
There are a number of JavaScript unit testing frameworks (see this comparison, but jest was chosen because of it is easy to setup/use, flexible, and well used in large projects.
The three main bundlers are; Webpack, Rollup and Parcel, with the functionality gap between all of these bundlers narrowing over the years.
Essentially, Rollup provides a middle ground between features and complexity, and is good for bundling libraries (it is what markdown-it
itself uses).
See for example:
FAQs
A markdown-it plugin to recognize gitbook blocks
The npm package markdown-it-plugin-gitbook receives a total of 1 weekly downloads. As such, markdown-it-plugin-gitbook popularity was classified as not popular.
We found that markdown-it-plugin-gitbook demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Libxml2’s solo maintainer drops embargoed security fixes, highlighting the burden on unpaid volunteers who keep critical open source software secure.
Research
Security News
Socket investigates hidden protestware in npm packages that blocks user interaction and plays the Ukrainian anthem for Russian-language visitors.
Research
Security News
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.