Single-file-output LESS compiler for Broccoli

Usage no npm install needed!

<script type="module">
  import broccoliLessSingle from '';



npm Version Build Status

The broccoli-less-single plugin compiles .less files with less.js.

This plugin is designed to compile a single, primary input file into a single output file, with a node of @importd dependencies. This differs from broccoli-less, which compiles each .less file individually into a .css file and doesn't support @imports or a single output file depending on multiple inputs.

This code is based heavily on broccoli-sass


npm install --save-dev broccoli-less-single


const compileLess = require('broccoli-less-single');

const outputNode = compileLess(inputNodes, inputFile, outputFile, options)
  • inputNodes: An array of nodes that act as the include paths for less. If you have a single node, pass [node].

  • inputFile: Relative path of the main .less file to compile. This file must exist in one of the inputNodes.

  • outputFile: Relative path of the output CSS file.

  • options: A hash of options for less + caching options.


var appCss = compileLess(sourceNodes, 'myapp/app.less', 'assets/app.css')


/* file: sub.less */
h1 {
  font-size: 200em;

/* =================== */

/* file: app.less */
@import "sub.less";

html, body {
  margin: 20px;


A sample project using bootstrap and broccoli-less-single can be found here.

// Brocfile.js
const Funnel      = require('broccoli-funnel');
const compileLess = require('broccoli-less-single');
const mergeTrees  = require('broccoli-merge-trees');

const appTree = funnel('app');
const lessTree = compileLess(appTree, 'styles/app.less', 'assets/app.css', {
  paths: ['.', 'bower_components/bootstrap/less'],
  // Note: if you want to cache to avoid possibly expensive rebuilds
  cacheInclude: [/.*\.(css|less)$/],
  cacheExclude: [],

module.exports = mergeTrees([appTree, lessTree]);