npm package: @shahzainb/highlight-loader
Description: Applies highlight.js to given HTML
Author: Shahzain
Latest version: 1.0.0

[![build status](https://secure.travis-ci.org/shahzainb/highlight-loader.svg)](http://travis-ci.org/shahzainb/highlight-loader)

# highlight-loader - Applies highlight.js to given module

This loader can apply syntax-highlighting via [highlight.js](https://www.npmjs.com/package/highlight.js) in two ways:

1. Given HTML (either straight HTML or the output of something like [markdown-loader](https://github.com/peerigon/markdown-loader)), it will replace the contents of `<code>` blocks with syntax-highlighted HTML generated by highlight.js. This is the default behavior.

2. Given a raw file, it will return syntax-highlighted HTML generated by highlight.js. This can be enabled by using the `raw` parameter.

You probably want to pass the HTML output of this loader through [html-loader](https://github.com/webpack/html-loader).

## Parameters

### raw

If any value is provided, the loader will interpret its input as a raw string to run through highlight.js.

By default, the language is auto-detected. To specify a language, use the `lang` parameter.

### lang

Specify a language for highlight.js. Only works in combination with the `raw` parameter.

(To specify a language for non-raw input, apply `lang-[something]` classes to your `<code>` blocks.)

### exec

Execute the input that `highlight-loader` receives. Useful in cases when chaining another loader which returns a function. One use case is to combine this with the [apply-loader](https://github.com/mogelbrod/apply-loader).

By default, exec is `false` and simply treats its input as a string.

## Installation

Install with npm:

```bash
npm install highlight-loader --save-dev
```

Make sure [`highlightjs`](https://github.com/isagalaev/highlight.js) is included and initialized on your page.

## Usage

Add `@shahzainb/highlight-loader` as a [webpack loader](https://webpack.github.io/docs/loaders.html):

```javascript
module: {
  rules: [
    {
      test: /\.md$/,
      use: ["@shahzainb/highlight-loader", "markdown-loader"]
    }
  ];
}
```

## Examples

```javascript
// Reading HTML from parsed markdown
var highlightedMarkdown = require("html!highlight!markdown!./README.md");

// Reading a file's raw contents and auto-detecting the language
var highlightedRaw = require("html!highlight?raw=true!./example-script.js");

// Reading a file's raw contents and specifying the language
var highlightedRawCss = require("html!highlight?raw=true&lang=css!./example-stylesheet.css");

// Reading HTML from a template loader
var highlightedRenderedJadeTemplate = require("html!highlight?exec!apply!jade!./index.jade");
```

## Contributors

- [Juho Vepsäläinen](https://github.com/bebraw) - Original maintainer and creator
- [David Clark](https://github.com/davidtheclark) - Added `raw` and `lang` parameters
- [Zane Miller](https://github.com/ZaneMiller) - Added missing `hljs` class to `pre` element
- [Javier Castro](https://github.com/jacargentina) - Added Node support
- [Sidd Sridharan](https://github.com/sidd) - Added support for `exec` parameter
- [M.K. Safi](https://github.com/msafi) - Added installation instructions

## License

highlight-loader is available under MIT. See LICENSE for more details.