source: node_modules/highlight.js/README.md

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 14.4 KB
Line 
1# Highlight.js
2
3[![latest version](https://badgen.net/npm/v/highlight.js?label=latest)](https://www.npmjs.com/package/highlight.js)
4[![slack](https://badgen.net/badge/icon/slack?icon=slack&label&color=pink)](https://join.slack.com/t/highlightjs/shared_invite/zt-mj0utgqp-TNFf4VQICnDnPg4zMHChFw)
5[![discord](https://badgen.net/badge/icon/discord?icon=discord&label&color=pink)](https://discord.gg/M24EbU7ja9)
6[![license](https://badgen.net/github/license/highlightjs/highlight.js?color=cyan)](https://github.com/highlightjs/highlight.js/blob/main/LICENSE)
7[![install size](https://badgen.net/packagephobia/install/highlight.js?label=npm+install)](https://packagephobia.now.sh/result?p=highlight.js)
8![minified](https://img.shields.io/github/size/highlightjs/cdn-release/build/highlight.min.js?label=minified)
9[![NPM downloads weekly](https://badgen.net/npm/dw/highlight.js?label=npm+downloads&color=purple)](https://www.npmjs.com/package/highlight.js)
10[![jsDelivr CDN downloads](https://badgen.net/jsdelivr/hits/gh/highlightjs/cdn-release?label=jsDelivr+CDN&color=purple)](https://www.jsdelivr.com/package/gh/highlightjs/cdn-release)
11![dev deps](https://badgen.net/david/dev/highlightjs/highlight.js?label=dev+deps)
12[![code quality](https://badgen.net/lgtm/grade/g/highlightjs/highlight.js/js)](https://lgtm.com/projects/g/highlightjs/highlight.js/?mode=list)
13
14[![build and CI status](https://badgen.net/github/checks/highlightjs/highlight.js?label=build)](https://github.com/highlightjs/highlight.js/actions?query=workflow%3A%22Node.js+CI%22)
15[![open issues](https://badgen.net/github/open-issues/highlightjs/highlight.js?label=issues)](https://github.com/highlightjs/highlight.js/issues)
16[![help welcome issues](https://badgen.net/github/label-issues/highlightjs/highlight.js/help%20welcome/open)](https://github.com/highlightjs/highlight.js/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+welcome%22)
17[![good first issue](https://badgen.net/github/label-issues/highlightjs/highlight.js/good%20first%20issue/open)](https://github.com/highlightjs/highlight.js/issues?q=is%3Aopen+is%3Aissue+label%3A%22beginner+friendly%22)
18[![vulnerabilities](https://badgen.net/snyk/highlightjs/highlight.js)](https://snyk.io/test/github/highlightjs/highlight.js?targetFile=package.json)
19
20<!-- [![Build CI](https://img.shields.io/github/workflow/status/highlightjs/highlight.js/Node.js%20CI)](https://github.com/highlightjs/highlight.js/actions?query=workflow%3A%22Node.js+CI%22) -->
21<!-- [![commits since release](https://img.shields.io/github/commits-since/highlightjs/highlight.js/latest?label=commits+since)](https://github.com/highlightjs/highlight.js/commits/main) -->
22<!-- [![](https://data.jsdelivr.com/v1/package/gh/highlightjs/cdn-release/badge?style=rounded)](https://www.jsdelivr.com/package/gh/highlightjs/cdn-release) -->
23<!-- [![Total Lines](https://img.shields.io/tokei/lines/github/highlightjs/highlight.js)]() -->
24<!-- [![npm bundle size (minified + gzip)](https://img.shields.io/bundlephobia/minzip/highlight.js.svg)](https://bundlephobia.com/result?p=highlight.js) -->
25
26
27Highlight.js is a syntax highlighter written in JavaScript. It works in
28the browser as well as on the server. It works with pretty much any
29markup, doesn’t depend on any framework, and has automatic language
30detection.
31
32#### Upgrading to Version 10
33
34Version 10 is one of the biggest releases in quite some time. If you're
35upgrading from version 9, there are some breaking changes and things you may
36want to double check first.
37
38Please read [VERSION_10_UPGRADE.md](https://github.com/highlightjs/highlight.js/blob/main/VERSION_10_UPGRADE.md) for high-level summary of breaking changes and any actions you may need to take. See [VERSION_10_BREAKING_CHANGES.md](https://github.com/highlightjs/highlight.js/blob/main/VERSION_10_BREAKING_CHANGES.md) for a more detailed list and [CHANGES.md](https://github.com/highlightjs/highlight.js/blob/main/CHANGES.md) to learn what else is new.
39
40##### Support for older versions
41
42Please see [SECURITY.md](https://github.com/highlightjs/highlight.js/blob/main/SECURITY.md) for support information.
43
44## Getting Started
45
46The bare minimum for using highlight.js on a web page is linking to the
47library along with one of the styles and calling [`highlightAll`][1]:
48
49```html
50<link rel="stylesheet" href="/path/to/styles/default.css">
51<script src="/path/to/highlight.min.js"></script>
52<script>hljs.highlightAll();</script>
53```
54
55This will find and highlight code inside of `<pre><code>` tags; it tries
56to detect the language automatically. If automatic detection doesn’t
57work for you, you can specify the language in the `class` attribute:
58
59```html
60<pre><code class="html">...</code></pre>
61```
62
63Classes may also be prefixed with either `language-` or `lang-`.
64
65```html
66<pre><code class="language-html">...</code></pre>
67```
68
69### Plaintext and Disabling Highlighting
70
71To style arbitrary text like code, but without any highlighting, use the
72`plaintext` class:
73
74```html
75<pre><code class="plaintext">...</code></pre>
76```
77
78To disable highlighting of a tag completely, use the `nohighlight` class:
79
80```html
81<pre><code class="nohighlight">...</code></pre>
82```
83
84### Supported Languages
85
86Highlight.js supports over 180 different languages in the core library. There are also 3rd party
87language plugins available for additional languages. You can find the full list of supported languages
88in [SUPPORTED_LANGUAGES.md][9].
89
90## Custom Scenarios
91
92When you need a bit more control over the initialization of
93highlight.js, you can use the [`highlightBlock`][3] and [`configure`][4]
94functions. This allows you to better control *what* to highlight and *when*.
95
96Here’s the equivalent of calling [`highlightAll`][1] using
97only vanilla JS:
98
99```js
100document.addEventListener('DOMContentLoaded', (event) => {
101 document.querySelectorAll('pre code').forEach((block) => {
102 hljs.highlightBlock(block);
103 });
104});
105```
106
107Please refer to the documentation for [`configure`][4] options.
108
109
110### Using custom HTML elements for code blocks
111
112We strongly recommend `<pre><code>` wrapping for code blocks. It's quite
113semantic and "just works" out of the box with zero fiddling. It is possible to
114use other HTML elements (or combos), but you may need to pay special attention to
115preserving linebreaks.
116
117Let's say your markup for code blocks uses divs:
118
119```html
120<div class='code'>...</div>
121```
122
123To highlight such blocks manually:
124
125```js
126// first, find all the div.code blocks
127document.querySelectorAll('div.code').forEach(block => {
128 // then highlight each
129 hljs.highlightBlock(block);
130});
131```
132
133Without using a tag that preserves linebreaks (like `pre`) you'll need some
134additional CSS to help preserve them. You could also [pre and post-process line
135breaks with a plug-in][brPlugin], but *we recommend using CSS*.
136
137[brPlugin]: https://github.com/highlightjs/highlight.js/issues/2559
138
139To preserve linebreaks inside a `div` using CSS:
140
141```css
142div.code {
143 white-space: pre;
144}
145```
146
147
148## Using with Vue.js
149
150Simply register the plugin with Vue:
151
152```js
153Vue.use(hljs.vuePlugin);
154```
155
156And you'll be provided with a `highlightjs` component for use
157in your templates:
158
159```html
160 <div id="app">
161 <!-- bind to a data property named `code` -->
162 <highlightjs autodetect :code="code" />
163 <!-- or literal code works as well -->
164 <highlightjs language='javascript' code="var x = 5;" />
165 </div>
166```
167
168## Web Workers
169
170You can run highlighting inside a web worker to avoid freezing the browser
171window while dealing with very big chunks of code.
172
173In your main script:
174
175```js
176addEventListener('load', () => {
177 const code = document.querySelector('#code');
178 const worker = new Worker('worker.js');
179 worker.onmessage = (event) => { code.innerHTML = event.data; }
180 worker.postMessage(code.textContent);
181});
182```
183
184In worker.js:
185
186```js
187onmessage = (event) => {
188 importScripts('<path>/highlight.min.js');
189 const result = self.hljs.highlightAuto(event.data);
190 postMessage(result.value);
191};
192```
193
194## Node.js
195
196You can use highlight.js with node to highlight content before sending it to the browser.
197Make sure to use the `.value` property to get the formatted html.
198For more info about the returned object refer to the [api docs](https://highlightjs.readthedocs.io/en/latest/api.html).
199
200
201```js
202// require the highlight.js library, including all languages
203const hljs = require('./highlight.js');
204const highlightedCode = hljs.highlightAuto('<span>Hello World!</span>').value
205```
206
207Or for a smaller footprint... load just the languages you need.
208
209```js
210const hljs = require('highlight.js/lib/core'); // require only the core library
211// separately require languages
212hljs.registerLanguage('xml', require('highlight.js/lib/languages/xml'));
213
214const highlightedCode = hljs.highlight('<span>Hello World!</span>', {language: 'xml'}).value
215```
216
217
218## ES6 Modules
219
220First, you'll likely install via `npm` or `yarn` -- see [Getting the Library](#getting-the-library) below.
221
222In your application:
223
224```js
225import hljs from 'highlight.js';
226```
227
228The default import imports all languages. Therefore it is likely to be more efficient to import only the library and the languages you need:
229
230```js
231import hljs from 'highlight.js/lib/core';
232import javascript from 'highlight.js/lib/languages/javascript';
233hljs.registerLanguage('javascript', javascript);
234```
235
236To set the syntax highlighting style, if your build tool processes CSS from your JavaScript entry point, you can also import the stylesheet directly as modules:
237
238```js
239import hljs from 'highlight.js/lib/core';
240import 'highlight.js/styles/github.css';
241```
242
243
244## Getting the Library
245
246You can get highlight.js as a hosted, or custom-build, browser script or
247as a server module. Right out of the box the browser script supports
248both AMD and CommonJS, so if you wish you can use RequireJS or
249Browserify without having to build from source. The server module also
250works perfectly fine with Browserify, but there is the option to use a
251build specific to browsers rather than something meant for a server.
252
253
254**Do not link to GitHub directly.** The library is not supposed to work straight
255from the source, it requires building. If none of the pre-packaged options
256work for you refer to the [building documentation][6].
257
258**On Almond.** You need to use the optimizer to give the module a name. For
259example:
260
261```bash
262r.js -o name=hljs paths.hljs=/path/to/highlight out=highlight.js
263```
264
265### CDN Hosted
266
267A prebuilt version of Highlight.js bundled with many common languages is hosted by several popular CDNs.
268When using Highlight.js via CDN you can use Subresource Integrity for additional security. For details
269see [DIGESTS.md](https://github.com/highlightjs/cdn-release/blob/main/DIGESTS.md).
270
271**cdnjs** ([link](https://cdnjs.com/libraries/highlight.js))
272
273```html
274<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.3/styles/default.min.css">
275<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.3/highlight.min.js"></script>
276<!-- and it's easy to individually load additional languages -->
277<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.3/languages/go.min.js"></script>
278```
279
280**jsdelivr** ([link](https://www.jsdelivr.com/package/gh/highlightjs/cdn-release))
281
282```html
283<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@10.7.3/build/styles/default.min.css">
284<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@10.7.3/build/highlight.min.js"></script>
285<!-- and it's easy to individually load additional languages -->
286<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@10.7.3/build/languages/go.min.js"></script>
287```
288
289**unpkg** ([link](https://unpkg.com/browse/@highlightjs/cdn-assets/))
290
291```html
292<link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@10.7.3/styles/default.min.css">
293<script src="https://unpkg.com/@highlightjs/cdn-assets@10.7.3/highlight.min.js"></script>
294<!-- and it's easy to individually load additional languages -->
295<script src="https://unpkg.com/@highlightjs/cdn-assets@10.7.3/languages/go.min.js"></script>
296```
297
298**Note:** *The CDN-hosted `highlight.min.js` package doesn't bundle every language.* It would be
299very large. You can find our list of "common" languages that we bundle by default on our [download page][5].
300
301### Self Hosting
302
303The [download page][5] can quickly generate a custom bundle including only the languages you need.
304
305Alternatively, you can build a browser package from [source](#source):
306
307```
308node tools/build.js -t browser :common
309```
310
311See our [building documentation][6] for more information.
312
313**Note:** Building from source should always result in the smallest size builds. The website download page is optimized for speed, not size.
314
315
316#### Prebuilt CDN assets
317
318You can also download and self-host the same assets we serve up via our own CDNs. We publish those builds to the [cdn-release](https://github.com/highlightjs/cdn-release) GitHub repository. You can easily pull individual files off the CDN endpoints with `curl`, etc; if say you only needed `highlight.min.js` and a single CSS file.
319
320There is also an npm package [@highlightjs/cdn-assets](https://www.npmjs.com/package/@highlightjs/cdn-assets) if pulling the assets in via `npm` or `yarn` would be easier for your build process.
321
322
323### NPM / Node.js server module
324
325Highlight.js can also be used on the server. The package with all supported languages can be installed from NPM or Yarn:
326
327```bash
328npm install highlight.js
329# or
330yarn add highlight.js
331```
332
333Alternatively, you can build it from [source](#source):
334
335```bash
336node tools/build.js -t node
337```
338
339See our [building documentation][6] for more information.
340
341
342### Source
343
344[Current source][10] is always available on GitHub.
345
346
347## License
348
349Highlight.js is released under the BSD License. See [LICENSE][7] file
350for details.
351
352
353## Links
354
355The official site for the library is at <https://highlightjs.org/>.
356
357Further in-depth documentation for the API and other topics is at
358<http://highlightjs.readthedocs.io/>.
359
360A list of the Core Team and contributors can be found in the [CONTRIBUTORS.md][8] file.
361
362[1]: http://highlightjs.readthedocs.io/en/latest/api.html#highlightall
363[2]: http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html
364[3]: http://highlightjs.readthedocs.io/en/latest/api.html#highlightblock-block
365[4]: http://highlightjs.readthedocs.io/en/latest/api.html#configure-options
366[5]: https://highlightjs.org/download/
367[6]: http://highlightjs.readthedocs.io/en/latest/building-testing.html
368[7]: https://github.com/highlightjs/highlight.js/blob/main/LICENSE
369[8]: https://github.com/highlightjs/highlight.js/blob/main/CONTRIBUTORS.md
370[9]: https://github.com/highlightjs/highlight.js/blob/main/SUPPORTED_LANGUAGES.md
371[10]: https://github.com/highlightjs/
Note: See TracBrowser for help on using the repository browser.