broccoli-less-single
Advanced tools
Comparing version 0.6.3 to 0.6.4
95
index.js
@@ -1,4 +0,4 @@ | ||
'use strict'; | ||
"use strict"; | ||
var CachingWriter = require('broccoli-caching-writer'); | ||
var CachingWriter = require("broccoli-caching-writer"); | ||
@@ -10,15 +10,27 @@ module.exports = LessCompiler; | ||
function LessCompiler(sourceTrees, inputFile, outputFile, _options) { | ||
function uniq(value, index, arr) { | ||
return arr.indexOf(value) === index; | ||
} | ||
function LessCompiler(sourceNodes, inputFile, outputFile, _options) { | ||
if (!(this instanceof LessCompiler)) { | ||
return new LessCompiler(sourceTrees, inputFile, outputFile, _options); | ||
return new LessCompiler(sourceNodes, inputFile, outputFile, _options); | ||
} | ||
CachingWriter.call(this, Array.isArray(sourceTrees) ? sourceTrees : [sourceTrees], _options); | ||
CachingWriter.call( | ||
this, | ||
Array.isArray(sourceNodes) ? sourceNodes : [sourceNodes], | ||
_options | ||
); | ||
if (!outputFile) { | ||
outputFile = inputFile.replace(/\.less/i, '.css'); | ||
} | ||
// clone the _options hash to prevent mutating what was | ||
// passed into us with fallback values. see issue #29 | ||
var options = require('lodash.merge')({}, _options); | ||
var options = require("lodash.merge")({}, _options); | ||
if (options.sourceMap) { | ||
if (typeof options.sourceMap !== 'object') { | ||
if (typeof options.sourceMap !== "object") { | ||
options.sourceMap = {}; | ||
@@ -28,3 +40,3 @@ } | ||
if (!options.sourceMap.sourceMapURL) { | ||
options.sourceMap.sourceMapURL = outputFile + '.map'; | ||
options.sourceMap.sourceMapURL = outputFile + ".map"; | ||
} | ||
@@ -34,14 +46,14 @@ } | ||
this.lessOptions = options; | ||
this.sourceTrees = sourceTrees; | ||
this.inputFile = inputFile; | ||
this.outputFile = outputFile; | ||
}; | ||
this.sourceNodes = sourceNodes; | ||
this.inputFile = inputFile; | ||
this.outputFile = outputFile; | ||
} | ||
LessCompiler.prototype.build = function() { | ||
var fs = require('fs'); | ||
var less = require('less'); | ||
var path = require('path'); | ||
var mkdirp = require('mkdirp'); | ||
var fs = require("fs"); | ||
var less = require("less"); | ||
var path = require("path"); | ||
var mkdirp = require("mkdirp"); | ||
var destFile = this.outputPath + '/' + this.outputFile; | ||
var destFile = this.outputPath + "/" + this.outputFile; | ||
@@ -51,32 +63,39 @@ mkdirp.sync(path.dirname(destFile)); | ||
var lessOptions = { | ||
filename: require('include-path-searcher').findFileSync(this.inputFile, this.inputPaths), | ||
paths: this.inputPaths.slice() | ||
filename: require("include-path-searcher").findFileSync( | ||
this.inputFile, | ||
this.inputPaths | ||
), | ||
paths: [] | ||
}; | ||
this.inputPaths = lessOptions.paths.slice(); | ||
require("lodash.merge")(lessOptions, this.lessOptions); | ||
require('lodash.merge')(lessOptions, this.lessOptions); | ||
lessOptions.paths = [path.dirname(lessOptions.filename)] | ||
.concat(this.inputPaths) | ||
.concat(lessOptions.paths) | ||
.filter(uniq); | ||
lessOptions.paths = [path.dirname(lessOptions.filename)].concat(lessOptions.paths); | ||
var data = fs.readFileSync(lessOptions.filename, "utf8"); | ||
var data = fs.readFileSync(lessOptions.filename, 'utf8'); | ||
return less | ||
.render(data, lessOptions) | ||
.catch(function(err) { | ||
less.writeError(err, lessOptions); | ||
return less.render(data, lessOptions). | ||
catch(function(err) { | ||
less.writeError(err, lessOptions); | ||
throw err; | ||
}). | ||
then(function (output) { | ||
fs.writeFileSync(destFile, output.css, { | ||
encoding: 'utf8' | ||
}); | ||
}) | ||
.then( | ||
(function(output) { | ||
fs.writeFileSync(destFile, output.css, { encoding: "utf8" }); | ||
var sourceMapURL = lessOptions.sourceMap && lessOptions.sourceMap.sourceMapURL; | ||
var sourceMapURL = lessOptions.sourceMap && | ||
lessOptions.sourceMap.sourceMapURL; | ||
if (sourceMapURL) { | ||
fs.writeFileSync(this.outputPath + '/' + sourceMapURL, output.map, { | ||
encoding: 'utf8' | ||
}); | ||
} | ||
}.bind(this)); | ||
if (sourceMapURL) { | ||
fs.writeFileSync(this.outputPath + "/" + sourceMapURL, output.map, { | ||
encoding: "utf8" | ||
}); | ||
} | ||
}).bind(this) | ||
); | ||
}; |
{ | ||
"name": "broccoli-less-single", | ||
"description": "Single-file-output LESS compiler for Broccoli", | ||
"version": "0.6.3", | ||
"version": "0.6.4", | ||
"author": { | ||
@@ -35,7 +35,7 @@ "name": "Gabriel Grant", | ||
"scripts": { | ||
"test": "mocha test/runner.js --reporter spec", | ||
"test:debug": "mocha debug test/runner.js --reporter spec" | ||
"test": "mocha tests/index.js --reporter spec", | ||
"test:debug": "mocha debug tests/index.js --reporter spec" | ||
}, | ||
"dependencies": { | ||
"broccoli-caching-writer": "^2.1.0", | ||
"broccoli-caching-writer": "^2.3.1", | ||
"include-path-searcher": "^0.1.0", | ||
@@ -47,5 +47,5 @@ "less": "^2.5.0", | ||
"devDependencies": { | ||
"broccoli": "^0.16.8", | ||
"mocha": "^2.2.4", | ||
"rsvp": "^3.1.0" | ||
"broccoli-test-helper": "^1.1.0", | ||
"chai": "^3.5.0", | ||
"mocha": "^2.2.4" | ||
}, | ||
@@ -52,0 +52,0 @@ "readmeFilename": "README.md", |
@@ -9,3 +9,3 @@ # broccoli-less-single | ||
This plugin is designed to compile a single, primary input file | ||
into a single output file, with a tree of `@import`d dependencies. This | ||
into a single output file, with a node of `@import`d dependencies. This | ||
differs from [broccoli-less](https://github.com/sindresorhus/broccoli-less/), | ||
@@ -29,10 +29,10 @@ which compiles each `.less` file individually into a `.css` file and doesn't | ||
var outputTree = compileLess(inputTrees, inputFile, outputFile, options) | ||
var outputNode = compileLess(inputNodes, inputFile, outputFile, options) | ||
``` | ||
* **`inputTrees`**: An array of trees that act as the include paths for | ||
less. If you have a single tree, pass `[tree]`. | ||
* **`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 `inputTrees`. | ||
file must exist in one of the `inputNodes`. | ||
@@ -46,3 +46,3 @@ * **`outputFile`**: Relative path of the output CSS file. | ||
```js | ||
var appCss = compileLess(sourceTrees, 'myapp/app.less', 'assets/app.css') | ||
var appCss = compileLess(sourceNodes, 'myapp/app.less', 'assets/app.css') | ||
``` | ||
@@ -81,4 +81,4 @@ | ||
var less = compileLess(app, 'styles/app.less', 'assets/app.css', { | ||
paths: ['.', 'bower_components/bootstrap/less'] | ||
}) | ||
paths: ['.', 'bower_components/bootstrap/less'] | ||
}); | ||
@@ -85,0 +85,0 @@ module.exports = mergeTrees([app, less]); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
54852
6
75