Socket
Socket
Sign inDemoInstall

broccoli-ruby-sass

Package Overview
Dependencies
76
Maintainers
2
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.2.0 to 0.3.0

README.md

27

Brocfile.js
var compileSass = require('./index');
var pickFiles = require('broccoli-static-compiler');
var mergeTrees = require('broccoli-merge-trees');
module.exports = function(broccoli) {
var tree =
pickFiles('test/input', {
srcDir: '/',
destDir: '/'
});
var tree = pickFiles('test/input', {
srcDir: '/',
destDir: '/'
});
return compileSass([tree], 'splitbutton.scss', 'splitbutton.css', {
outputStyle: 'expanded'
});
};
var tree1 = compileSass(tree, 'splitbutton.scss', 'splitbutton.css', {
outputStyle: 'expanded',
sourceMap: 'none'
});
var tree2 = compileSass(tree, 'loadpath_main.scss', 'loadpath_main.css', {
outputStyle: 'expanded',
sourceMap: 'none',
loadPath: ['/loadpath']
});
module.exports = mergeTrees([tree1, tree2]);

@@ -1,16 +0,17 @@

var fs = require('fs');
/* jshint node: true */
var path = require('path');
var mkdirp = require('mkdirp');
var includePathSearcher = require('include-path-searcher');
var quickTemp = require('quick-temp');
var mapSeries = require('promise-map-series');
var _ = require('lodash');
var Writer = require('broccoli-caching-writer');
var dargs = require('dargs');
var spawn = require('win-spawn');
var Promise = require('rsvp').Promise;
var _ = require('lodash');
module.exports = SassCompiler;
function SassCompiler (sourceTrees, inputFile, outputFile, options) {
if (!(this instanceof SassCompiler)) return new SassCompiler(sourceTrees, inputFile, outputFile, options);
this.sourceTrees = sourceTrees;
SassCompiler.prototype = Object.create(Writer.prototype);
SassCompiler.prototype.constructor = SassCompiler;
function SassCompiler (inputTree, inputFile, outputFile, options) {
if (!(this instanceof SassCompiler)) return new SassCompiler(inputTree, inputFile, outputFile, options);
Writer.call(this, inputTree, options);
this.inputFile = inputFile;

@@ -23,92 +24,99 @@ this.outputFile = outputFile;

sourceComments: options.sourceComments,
sourcemap: options.sourceMap,
sourcemap: options.sourceMap || 'none',
bundleExec: options.bundleExec,
require: options.require,
loadPath: options.loadPath || []
loadPath: options.loadPath || [],
precision: options.precision,
unixNewlines: options.unixNewlines,
cacheLocation: options.cacheLocation
};
this.customArgs = options.customArgs || [];
}
SassCompiler.prototype.read = function (readTree) {
var self = this;
SassCompiler.prototype.updateCache = function (srcDir, destDir) {
var bundleExec = this.sassOptions.bundleExec;
quickTemp.makeOrRemake(this, '_tmpDestDir');
var destFile = this._tmpDestDir + '/' + this.outputFile;
var destFile = destDir + '/' + this.outputFile;
var includePaths = [srcDir];
mkdirp.sync(path.dirname(destFile));
return mapSeries(this.sourceTrees, readTree)
.then(function (includePaths) {
includePaths.unshift(path.dirname(self.inputFile));
self.sassOptions.loadPath = self.sassOptions.loadPath.concat(includePaths);
var passedArgs = dargs(self.sassOptions, ['bundleExec']);
var args = [
'sass',
includePathSearcher.findFileSync(self.inputFile, includePaths),
destFile
].concat(passedArgs);
if(bundleExec) {
args.unshift('bundle', 'exec');
}
includePaths.unshift(path.dirname(this.inputFile));
if(path.extname(self.inputFile) === '.css') {
args.push('--scss');
}
var loadPaths = this.sassOptions.loadPath;
var loadPath = srcDir.map(function(dir){
return loadPaths.map(function(loadPath){
return path.join(dir, loadPath);
});
});
loadPath = _.flatten(loadPath);
loadPath = loadPath.concat(includePaths);
loadPath = dargs({loadPath: loadPath});
var passedArgs = dargs(this.sassOptions, ['bundleExec', 'loadPath']);
var args = [
'sass',
includePathSearcher.findFileSync(this.inputFile, includePaths),
destFile
].concat(passedArgs).concat(this.customArgs).concat(loadPath);
return new Promise(function(resolve, reject) {
var cmd = args.shift();
var cp = spawn(cmd, args);
if(bundleExec) {
args.unshift('bundle', 'exec');
}
function isWarning(error) {
return /DEPRECATION WARNING/.test(error.toString()) || /WARNING:/.test(error.toString());
}
if(path.extname(this.inputFile) === '.css') {
args.push('--scss');
}
cp.on('error', function(err) {
if (isWarning(err)) {
console.warn(err);
return;
}
return new Promise(function(resolve, reject) {
var cmd = args.shift();
var cp = spawn(cmd, args);
console.error('[broccoli-ruby-sass] '+ err);
reject(err);
});
function isWarning(error) {
return /DEPRECATION WARNING/.test(error.toString()) || /WARNING:/.test(error.toString());
}
var errors = '';
cp.on('error', function(err) {
if (isWarning(err)) {
console.warn(err);
return;
}
cp.on('data', function(data) {
// ignore deprecation warnings
console.error('[broccoli-ruby-sass] '+ err);
reject(err);
});
if (isWarning(err)) {
console.warn(err);
return;
}
var errors = '';
errors += data;
});
cp.on('data', function(data){
// ignore deprecation warnings
cp.stderr.on('data', function(data) {
if (!isWarning(data)) {
errors += data;
} else {
console.warn('[broccoli-ruby-sass] ' + data);
}
});
if (isWarning(data)) {
console.warn(data);
return;
}
cp.on('close', function(code) {
if(errors) {
reject(errors);
}
errors += data;
});
if(code > 0) {
reject('broccoli-ruby-sass exited with error code ' + code);
}
cp.stderr.on('data', function(data) {
if (!isWarning(data)) {
errors += data;
} else {
console.warn('[broccoli-ruby-sass] ' + data);
}
});
resolve(self._tmpDestDir);
});
cp.on('close', function(code) {
if(errors) {
reject(errors);
}
return self._tmpDestDir;
});
if(code > 0) {
reject('broccoli-ruby-sass exited with error code ' + code);
}
resolve();
});
});
};
SassCompiler.prototype.cleanup = function () {
quickTemp.remove(this, '_tmpDestDir');
};
module.exports = SassCompiler;
{
"name": "broccoli-ruby-sass",
"version": "0.2.0",
"version": "0.3.0",
"description": "Broccoli plugin that compiles Sass using the Ruby-based compiler",

@@ -10,3 +10,3 @@ "main": "index.js",

"scripts": {
"test": "mocha test/broccoli-ruby-sass-test.js"
"test": "mocha test"
},

@@ -31,19 +31,22 @@ "repository": {

"devDependencies": {
"rsvp": "^3.0.6",
"broccoli": "^0.13.2",
"broccoli-merge-trees": "^0.2.1",
"chai": "^1.9.1",
"chai-as-promised": "^4.1.1",
"mocha": "^1.18.2",
"broccoli": "^0.7.1"
"rsvp": "^3.0.6"
},
"dependencies": {
"broccoli": "^0.13.2",
"broccoli-caching-writer": "^0.5.2",
"broccoli-static-compiler": "^0.1.4",
"dargs": "^2.0.0",
"include-path-searcher": "^0.1.0",
"lodash": "^2.4.1",
"mkdirp": "^0.3.5",
"promise-map-series": "^0.2.0",
"quick-temp": "^0.1.0",
"promise-map-series": "^0.2.0",
"dargs": "^0.1.0",
"win-spawn": "^2.0.0",
"include-path-searcher": "^0.1.0",
"lodash": "^2.4.1",
"broccoli-static-compiler": "^0.1.2",
"rsvp": "^3.0.6"
"rsvp": "^3.0.6",
"win-spawn": "^2.0.0"
}
}

@@ -7,2 +7,3 @@ var RSVP = require('rsvp');

var broccoli = require('broccoli');
var path = require('path');

@@ -18,10 +19,5 @@ chai.use(chaiAsPromised);

function build() {
return new RSVP.Promise(function(resolve) {
var tree = broccoli.loadBrocfile();
var builder = new broccoli.Builder(tree);
return builder.build().then(function(dir) {
// TODO: If I don't do this, the file built does not exist to node, huh?
setTimeout(resolve.bind(null, dir), 750);
});
});
var tree = broccoli.loadBrocfile();
var builder = new broccoli.Builder(tree);
return builder.build();
}

@@ -31,3 +27,3 @@

return build().then(function(dir) {
builtTo = dir;
builtTo = dir.directory;
});

@@ -37,4 +33,3 @@ });

it('compiles templates with @extend', function() {
var actualPath = require('path').resolve('./' + builtTo + '/splitbutton.css');
console.log(actualPath);
var actualPath = require('path').resolve(builtTo + '/splitbutton.css');
var readActual = readFile.bind(null, actualPath);

@@ -50,2 +45,14 @@ var readExpected = readFile.bind(null, './test/output/splitbutton.css');

it("uses the load path correctly, e.g. doesn't look up in file system root", function(){
var actualPath = require('path').resolve(builtTo + '/loadpath_main.css');
var readActual = readFile.bind(null, actualPath);
var readExpected = readFile.bind(null, './test/output/loadpath_main.css');
return RSVP.all([readActual(), readExpected()]).then(function(result) {
var actual = result[0].toString(), expected = result[1].toString();
assert(actual, 'actual is undefined');
assert(expected, 'expected is undefined');
assert.equal(actual, expected);
});
});
});

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc