# Compilers

## TypeScript compiler

The TypeScript compiler uses TypeScript to compile your TypeScript code to JavaScript.

To use it add this to your `PIPELINE['COMPILERS']`

    PIPELINE['COMPILERS'] = (
      'pipeline.compilers.typescript.TypeScriptCompiler',
    )

### `TYPE_SCRIPT_BINARY`

> Command line to execute for TypeScript program. You will most likely change this to the location of `tsc` on your system.

> Defaults to `'/usr/bin/env tsc'`.

### `TYPE_SCRIPT_ARGUMENTS`

> Additional arguments to use when `tsc` is called.

> Defaults to `''`.

## Coffee Script compiler

The Coffee Script compiler uses Coffee Script to compile your javascript.

To use it add this to your `PIPELINE['COMPILERS']`

    PIPELINE['COMPILERS'] = (
      'pipeline.compilers.coffee.CoffeeScriptCompiler',
    )

### `COFFEE_SCRIPT_BINARY`

> Command line to execute for coffee program. You will most likely change this to the location of coffee on your system.

> Defaults to `'/usr/bin/env coffee'`.

### `COFFEE_SCRIPT_ARGUMENTS`

> Additional arguments to use when coffee is called.

> Defaults to `''`.

## Live Script compiler

The LiveScript compiler uses LiveScript to compile your javascript.

To use it add this to your `PIPELINE['COMPILERS']`

    PIPELINE['COMPILERS'] = (
      'pipeline.compilers.livescript.LiveScriptCompiler',
    )

### `LIVE_SCRIPT_BINARY`

> Command line to execute for LiveScript program. You will most likely change this to the location of lsc on your system.

> Defaults to `'/usr/bin/env lsc'`.

### `LIVE_SCRIPT_ARGUMENTS`

> Additional arguments to use when lsc is called.

> Defaults to `''`.

## LESS compiler

The LESS compiler uses LESS to compile your stylesheets.

To use it add this to your `PIPELINE['COMPILERS']`

    PIPELINE['COMPILERS'] = (
      'pipeline.compilers.less.LessCompiler',
    )

### `LESS_BINARY`

> Command line to execute for lessc program. You will most likely change this to the location of lessc on your system.

> Defaults to `'/usr/bin/env lessc'`.

### `LESS_ARGUMENTS`

> Additional arguments to use when lessc is called.

> Defaults to `''`.

## SASS compiler

The SASS compiler uses SASS to compile your stylesheets.

To use it add this to your `PIPELINE['COMPILERS']`

    PIPELINE['COMPILERS'] = (
      'pipeline.compilers.sass.SASSCompiler',
    )

### `SASS_BINARY`

> Command line to execute for sass program. You will most likely change this to the location of sass on your system.

> Defaults to `'/usr/bin/env sass'`.

### `SASS_ARGUMENTS`

> Additional arguments to use when sass is called.

> Defaults to `''`.

## Stylus compiler

The Stylus compiler uses Stylus to compile your stylesheets.

To use it add this to your `PIPELINE['COMPILERS']`

    PIPELINE['COMPILERS'] = (
        'pipeline.compilers.stylus.StylusCompiler',
    )

### `STYLUS_BINARY`

> Command line to execute for stylus program. You will most likely change this to the location of stylus on your system.

> Defaults to `'/usr/bin/env stylus'`.

### `STYLUS_ARGUMENTS`

> Additional arguments to use when stylus is called.

> Defaults to `''`.

## ES6 compiler

The ES6 compiler uses Babel to convert ES6+ code into vanilla ES5.

Note that for files to be transpiled properly they must have the file extension .es6

To use it add this to your `PIPELINE['COMPILERS']`

    PIPELINE['COMPILERS'] = (
        'pipeline.compilers.es6.ES6Compiler',
    )

### `BABEL_BINARY`

> Command line to execute for babel program. You will most likely change this to the location of babel on your system.

> Defaults to `'/usr/bin/env babel'`.

### `BABEL_ARGUMENTS`

> Additional arguments to use when babel is called.

> Defaults to `''`.

## Write your own compiler class

You can write your own compiler class, for example if you want to implement other types of compilers.

To do so, you just have to create a class that inherits from `pipeline.compilers.CompilerBase` and implements `match_file` and `compile_file` when needed.

Finally, specify it in the tuple of compilers `PIPELINE['COMPILERS']` in the settings.

### Example

A custom compiler for an imaginary compiler called jam

    from pipeline.compilers import CompilerBase

    class JamCompiler(CompilerBase):
      output_extension = 'js'

      def match_file(self, filename):
        return filename.endswith('.jam')

      def compile_file(self, infile, outfile, outdated=False, force=False):
        if not outdated and not force:
          return  # No need to recompiled file
        return jam.compile(infile, outfile)

## 3rd Party Compilers

Here is an (in)complete list of 3rd party compilers that integrate with django-pipeline

### Compass (requires RubyGem)

Creator:

  Mila Labs

Description:

  Compass compiler for django-pipeline using the original Ruby gem.

Link:

  https://github.com/mila-labs/django-pipeline-compass-rubygem

### Compass (standalone)

Creator:

  Vitaly Babiy

Description:

  django-pipeline-compass is a compiler for django-pipeline. Making it really easy to use scss and compass with out requiring the compass gem.

Link:

  https://github.com/vbabiy/django-pipeline-compass

### Libsass (standalone)

Creator:

  Johanderson Mogollon

Description:

  libsasscompiler is a compiler for django-pipeline. Making it really easy to use scss/sass with the super fast libsass library.

Link:

  https://github.com/sonic182/libsasscompiler