🔥 Code parser & syntax highlighter based on lowlight, used across the WebEach ecosystem to highlight code snippets consistently in Markdown, blogs, documentation, and extra UI components.
Converts raw code strings into:
- 📆 HAST (Hypertext Abstract Syntax Tree)
- 🧹 Pre-rendered HTML with consistent class naming (
_token-*)
- Supports popular languages: TypeScript, JavaScript, CSS, YAML, Bash, JSON, Markdown, etc.
- Converts code to HAST or HTML
- Tiny, dependency-light
yarn add @webeach/code-parserimport { parseCodeToHast } from '@webeach/code-parser';
const hast = parseCodeToHast(`const foo = 'bar'`, 'typescript');import { parseCodeToHtml } from '@webeach/code-parser';
const html = parseCodeToHtml(`const foo = 'bar'`, 'typescript');
// <span class="_token-keyword">const</span> foo = ...import type { LangKey } from '@webeach/code-parser';
const lang: LangKey = 'typescript'; // autocomplete-safeSupported languages:
bashcsshtmljavascriptjsonlessmarkdownscssshellsqlstylustypescriptxmlyaml
This library outputs class names like _token-keyword, _token-string, etc.
You can map these to your design system using CSS:
._token-comment,
._token-quote {
color: var(--color-neutral-6);
font-style: italic;
}
._token-doctag,
._token-formula,
._token-keyword,
._token-name {
color: var(--color-primary-7);
}
._token-section,
._token-selector-tag,
._token-deletion,
._token-subst {
color: var(--color-danger-9);
}
._token-literal,
._token-number {
color: var(--color-secondary-7);
}
._token-string,
._token-regexp,
._token-addition,
._token-attribute,
._token-meta ._token-string {
color: var(--color-success-8);
}
._token-attr,
._token-variable,
._token-template-variable,
._token-type,
._token-selector-class,
._token-selector-attr,
._token-selector-pseudo {
color: var(--color-warning-9);
}
._token-symbol,
._token-bullet,
._token-link,
._token-meta,
._token-selector-id,
._token-title {
color: var(--color-secondary-7);
}
._token-built_in,
._token-title.class_,
._token-class ._token-title {
color: var(--color-warning-8);
}
._token-emphasis {
font-style: italic;
}
._token-strong {
font-weight: bold;
}
._token-link {
text-decoration: underline;
}Compiles the codebase and generates the production-ready output in the lib directory.
yarn run buildWatches for file changes and rebuilds automatically.
yarn run build:watchReleases are handled automatically using semantic-release.
Before publishing a new version, make sure to:
- Commit and push all changes to the
mainbranch. - Use commit messages that follow the Conventional Commits format:
feat: ...— for new featuresfix: ...— for bug fixeschore: ...,refactor: ..., etc.
- Versioning is determined automatically based on the type of commits (
patch,minor,major).
Developed and maintained by Ruslan Martynov
If you have any suggestions or find a bug, feel free to open an issue or pull request.
This package is licensed under the MIT License.