Pre-compiled CDN assets for highlight.js syntax highlighting with language autodetection and theme support.
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Individual language definition files and theme CSS files for modular loading, enabling dynamic imports and optimized bundle sizes.
192 individual language definition files for on-demand loading.
// Language file imports (ES modules)
import langDefinition from '@highlightjs/cdn-assets/es/languages/{language}.js';
import langDefinition from '@highlightjs/cdn-assets/languages/{language}.min.js';
// Available languages (examples):
// javascript, python, java, cpp, csharp, php, ruby, go, rust,
// typescript, html, css, xml, json, yaml, sql, bash, dockerfile,
// markdown, latex, r, matlab, scala, kotlin, swift, dart, and 170+ moreUsage Examples:
// Dynamic ES module import
async function loadLanguage(langName) {
try {
const langModule = await import(`@highlightjs/cdn-assets/es/languages/${langName}.js`);
hljs.registerLanguage(langName, langModule.default);
return true;
} catch (error) {
console.error(`Failed to load ${langName}:`, error);
return false;
}
}
// Load and use a language
await loadLanguage('python');
const result = hljs.highlight('def hello(): print("world")', { language: 'python' });
// Minified version for production
import pythonLang from '@highlightjs/cdn-assets/languages/python.min.js';
hljs.registerLanguage('python', pythonLang);Language files compatible with browsers and CommonJS environments.
// Browser script tag loading
<script src="@highlightjs/cdn-assets/languages/javascript.min.js"></script>
// CommonJS require
const pythonLang = require('@highlightjs/cdn-assets/languages/python.min.js');
hljs.registerLanguage('python', pythonLang);Usage Examples:
<!-- Browser loading with script tags -->
<script src="@highlightjs/cdn-assets/highlight.min.js"></script>
<script src="@highlightjs/cdn-assets/languages/python.min.js"></script>
<script src="@highlightjs/cdn-assets/languages/javascript.min.js"></script>
<script>
// Languages are automatically registered in browser
hljs.highlightAll();
</script>160 CSS theme files for visual styling and syntax coloring.
/* Theme CSS files */
@import '@highlightjs/cdn-assets/styles/{theme-name}.css';
@import '@highlightjs/cdn-assets/styles/{theme-name}.min.css';
/* Popular themes include: */
/* default, github, vs, vs2015, atom-one-dark, atom-one-light, */
/* monokai, solarized-dark, solarized-light, dracula, nord, */
/* tomorrow, tomorrow-night, base16, railscasts, and 145+ more */Usage Examples:
<!-- Link theme CSS in HTML -->
<link rel="stylesheet" href="@highlightjs/cdn-assets/styles/github.css">
<link rel="stylesheet" href="@highlightjs/cdn-assets/styles/atom-one-dark.min.css">
<!-- Dynamic theme loading -->
<script>
function loadTheme(themeName) {
const existingLink = document.querySelector('link[data-hljs-theme]');
if (existingLink) existingLink.remove();
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = `@highlightjs/cdn-assets/styles/${themeName}.css`;
link.dataset.hljsTheme = 'true';
document.head.appendChild(link);
}
loadTheme('vs2015');
</script>// Systems programming
await loadLanguage('rust');
await loadLanguage('cpp');
await loadLanguage('c');
await loadLanguage('go');
// Web development
await loadLanguage('javascript');
await loadLanguage('typescript');
await loadLanguage('html');
await loadLanguage('css');
await loadLanguage('php');
// Application development
await loadLanguage('java');
await loadLanguage('csharp');
await loadLanguage('python');
await loadLanguage('ruby');
await loadLanguage('kotlin');
await loadLanguage('swift');
// Functional programming
await loadLanguage('haskell');
await loadLanguage('scala');
await loadLanguage('erlang');
await loadLanguage('elixir');
await loadLanguage('clojure');// Markup languages
await loadLanguage('xml');
await loadLanguage('markdown');
await loadLanguage('latex');
await loadLanguage('asciidoc');
// Data formats
await loadLanguage('json');
await loadLanguage('yaml');
await loadLanguage('toml');
await loadLanguage('ini');
await loadLanguage('csv');
// Configuration files
await loadLanguage('nginx');
await loadLanguage('apache');
await loadLanguage('dockerfile');
await loadLanguage('makefile');// SQL variants
await loadLanguage('sql');
await loadLanguage('mysql');
await loadLanguage('postgresql');
await loadLanguage('sqlite');
// NoSQL
await loadLanguage('mongodb');
await loadLanguage('redis');
// Query languages
await loadLanguage('graphql');
await loadLanguage('sparql');// Shell scripting
await loadLanguage('bash');
await loadLanguage('zsh');
await loadLanguage('powershell');
await loadLanguage('batch');
// Scripting languages
await loadLanguage('perl');
await loadLanguage('lua');
await loadLanguage('tcl');
await loadLanguage('awk');/* Clean and minimal */
@import '@highlightjs/cdn-assets/styles/default.css';
@import '@highlightjs/cdn-assets/styles/github.css';
@import '@highlightjs/cdn-assets/styles/vs.css';
/* Colorful */
@import '@highlightjs/cdn-assets/styles/atom-one-light.css';
@import '@highlightjs/cdn-assets/styles/solarized-light.css';
@import '@highlightjs/cdn-assets/styles/tomorrow.css';/* Popular dark themes */
@import '@highlightjs/cdn-assets/styles/vs2015.css';
@import '@highlightjs/cdn-assets/styles/atom-one-dark.css';
@import '@highlightjs/cdn-assets/styles/monokai.css';
@import '@highlightjs/cdn-assets/styles/dracula.css';
@import '@highlightjs/cdn-assets/styles/nord.css';
/* Terminal-inspired */
@import '@highlightjs/cdn-assets/styles/tomorrow-night.css';
@import '@highlightjs/cdn-assets/styles/railscasts.css';/* High contrast themes */
@import '@highlightjs/cdn-assets/styles/a11y-dark.css';
@import '@highlightjs/cdn-assets/styles/a11y-light.css';
/* Low contrast */
@import '@highlightjs/cdn-assets/styles/base16/google-light.css';
@import '@highlightjs/cdn-assets/styles/base16/google-dark.css';const languageLoader = {
cache: new Set(),
async load(language) {
if (this.cache.has(language)) return true;
if (hljs.getLanguage(language)) {
this.cache.add(language);
return true;
}
try {
const module = await import(`@highlightjs/cdn-assets/es/languages/${language}.js`);
hljs.registerLanguage(language, module.default);
this.cache.add(language);
return true;
} catch (error) {
console.warn(`Language ${language} not available`);
return false;
}
},
async loadMultiple(languages) {
const results = await Promise.allSettled(
languages.map(lang => this.load(lang))
);
return results.map((result, i) => ({
language: languages[i],
loaded: result.status === 'fulfilled' && result.value
}));
}
};
// Usage
await languageLoader.load('rust');
const loadResults = await languageLoader.loadMultiple(['python', 'go', 'unknown']);class ThemeManager {
constructor() {
this.currentTheme = 'default';
this.themeCache = new Map();
}
async loadTheme(themeName) {
if (this.themeCache.has(themeName)) {
return this.themeCache.get(themeName);
}
try {
// Preload theme CSS
const response = await fetch(`@highlightjs/cdn-assets/styles/${themeName}.css`);
const css = await response.text();
this.themeCache.set(themeName, css);
return css;
} catch (error) {
console.error(`Failed to load theme ${themeName}`);
return null;
}
}
async switchTheme(themeName) {
const css = await this.loadTheme(themeName);
if (!css) return false;
// Remove current theme
const existingLink = document.querySelector('link[data-hljs-theme]');
if (existingLink) existingLink.remove();
// Apply new theme
const style = document.createElement('style');
style.textContent = css;
style.dataset.hljsTheme = themeName;
document.head.appendChild(style);
this.currentTheme = themeName;
return true;
}
getCurrentTheme() {
return this.currentTheme;
}
}
// Usage
const themeManager = new ThemeManager();
await themeManager.switchTheme('atom-one-dark');class LazyHighlighter {
constructor() {
this.observer = new IntersectionObserver(
this.handleIntersection.bind(this),
{ rootMargin: '50px' }
);
}
async handleIntersection(entries) {
for (const entry of entries) {
if (entry.isIntersecting) {
const element = entry.target;
const language = this.detectLanguage(element);
if (language && !hljs.getLanguage(language)) {
await this.loadLanguage(language);
}
hljs.highlightElement(element);
this.observer.unobserve(element);
}
}
}
async loadLanguage(language) {
try {
const module = await import(`@highlightjs/cdn-assets/es/languages/${language}.js`);
hljs.registerLanguage(language, module.default);
} catch (error) {
console.warn(`Could not load language: ${language}`);
}
}
detectLanguage(element) {
const classes = element.className.match(/language-(\w+)/);
return classes ? classes[1] : null;
}
observe(element) {
this.observer.observe(element);
}
}
// Usage
const lazyHighlighter = new LazyHighlighter();
document.querySelectorAll('pre code').forEach(el => {
lazyHighlighter.observe(el);
});@highlightjs/cdn-assets/
├── highlight.js # Full UMD build
├── highlight.min.js # Minified UMD build
├── es/ # ES6 modules
│ ├── highlight.js # ES6 build
│ ├── highlight.min.js # Minified ES6 build
│ ├── core.js # Core without languages
│ ├── core.min.js # Minified core
│ └── languages/ # ES6 language modules
│ ├── javascript.js
│ ├── python.js
│ └── ... (190+ more)
├── languages/ # UMD language files
│ ├── javascript.min.js
│ ├── python.min.js
│ └── ... (190+ more)
└── styles/ # CSS themes
├── default.css
├── github.css
├── vs2015.css
└── ... (158+ more)