# Building Highlight.js for Gerrit

Highlight JS needs to be built with specific language support. Here are the
steps to build the minified file that appears here.

NOTE: If you are adding support for a language to Highlight.js make sure to add
it to the list of languages in the build command below.

## Prerequisites

You will need:

* nodejs
* closure-compiler
* git

## Steps to Create the Pack File

The packed version of Highlight.js is an un-minified JS file with all of the
languages included. Build it with the following:

    $>  # start in some temp directory
    $>  git clone https://github.com/highlightjs/highlight.js
    $>  cd highlight.js
    $>  git clone https://github.com/highlightjs/highlightjs-closure-templates
    $>  ln -s ../../highlightjs-closure-templates/soy.js src/languages/soy.js
    $>  mkdir test/detect/soy && ln -s ../../../highlightjs-closure-templates/test/detect/soy/default.txt test/detect/soy/default.txt
    $>  npm install
    $>  node tools/build.js -n

The resulting JS file will appear in the "build" directory of the Highlight.js
repo under the name "highlight.pack.js".

## Minification

Minify the file using closure-compiler using the command below.

    $> wget https://dl.google.com/closure-compiler/compiler-latest.zip

    $> unzip compiler-latest.zip

    $> mv closure-compiler-*.jar closure-compiler.jar

    $>  java -jar ./closure-compiler.jar \
            --js build/highlight.js \
            --js_output_file build/highlight.min.js

Copy the header comment that appears on the first line of
build/highlight.pack.js and add it to the start of build/highlight.min.js.

## Finish

Copy the resulting build/highlight.min.js file to lib/highlightjs
