UNPKG

pp-parachute

Version:
48 lines (45 loc) 1.79 kB
var Promise = require('bluebird'); var sass = require('node-sass'); var fs = require('fs'); var path = require('path'); var createEntryFile = function (filePaths) { var entryFile = filePaths[0]; if(typeof entryFile !== 'string') return null; var imports = fs.readFileSync(entryFile).toString(); for (var i = 0; i < filePaths.length; i++) { //todo handle an entry file, otherwise take them in the order they come in if (filePaths[i] === entryFile) continue; imports += '\n@import "' + filePaths[i] + '";'; } //generate a temporary file that is the entry file + all the import directives. //given a random name in case two instances are running and happen to collide. var tempEntryFile = path.dirname(entryFile) + '/sass_tmp_' + new Date().getTime() + '_.scss'; fs.writeFileSync(tempEntryFile, imports); return tempEntryFile; }; var compile = function (filePaths) { var entryFile = createEntryFile(filePaths); if(!entryFile) return Promise.resolve(''); return new Promise(function (resolve, reject) { sass.render({ file: entryFile, success: function (result) { resolve(result.css); //destroy temp file if it is there fs.existsSync(entryFile) && fs.unlinkSync(entryFile); }, error: function (result) { //destroy temp file if it is there fs.existsSync(entryFile) && fs.unlinkSync(entryFile); reject({ path: result.file, error: result.message, line: 'Line: ' + result.line + ', Column: ' + result.column }); } }); }); }; module.exports = { compile: compile };