$
This commit is contained in:
120
node_modules/node-sass/lib/render.js
generated
vendored
Normal file
120
node_modules/node-sass/lib/render.js
generated
vendored
Normal file
@@ -0,0 +1,120 @@
|
||||
/*!
|
||||
* node-sass: lib/render.js
|
||||
*/
|
||||
|
||||
var chalk = require('chalk'),
|
||||
fs = require('fs'),
|
||||
path = require('path'),
|
||||
sass = require('./');
|
||||
|
||||
/**
|
||||
* Render
|
||||
*
|
||||
* @param {Object} options
|
||||
* @param {Object} emitter
|
||||
* @api public
|
||||
*/
|
||||
|
||||
module.exports = function(options, emitter) {
|
||||
var renderOptions = {
|
||||
includePaths: options.includePath,
|
||||
omitSourceMapUrl: options.omitSourceMapUrl,
|
||||
indentedSyntax: options.indentedSyntax,
|
||||
outFile: options.dest,
|
||||
outputStyle: options.outputStyle,
|
||||
precision: options.precision,
|
||||
sourceComments: options.sourceComments,
|
||||
sourceMapEmbed: options.sourceMapEmbed,
|
||||
sourceMapContents: options.sourceMapContents,
|
||||
sourceMap: options.sourceMap,
|
||||
sourceMapRoot: options.sourceMapRoot,
|
||||
importer: options.importer,
|
||||
functions: options.functions,
|
||||
indentWidth: options.indentWidth,
|
||||
indentType: options.indentType,
|
||||
linefeed: options.linefeed
|
||||
};
|
||||
|
||||
if (options.data) {
|
||||
renderOptions.data = options.data;
|
||||
} else if (options.src) {
|
||||
renderOptions.file = options.src;
|
||||
}
|
||||
|
||||
var sourceMap = options.sourceMap;
|
||||
var destination = options.dest;
|
||||
var stdin = options.stdin;
|
||||
|
||||
var success = function(result) {
|
||||
var todo = 1;
|
||||
var done = function() {
|
||||
if (--todo <= 0) {
|
||||
emitter.emit('done');
|
||||
}
|
||||
};
|
||||
|
||||
if (!destination || stdin) {
|
||||
emitter.emit('log', result.css.toString());
|
||||
|
||||
if (sourceMap && !options.sourceMapEmbed) {
|
||||
emitter.emit('log', result.map.toString());
|
||||
}
|
||||
|
||||
return done();
|
||||
}
|
||||
|
||||
emitter.emit('info', chalk.green('Rendering Complete, saving .css file...'));
|
||||
|
||||
fs.mkdir(path.dirname(destination), {recursive: true}, function(err) {
|
||||
if (err) {
|
||||
return emitter.emit('error', chalk.red(err));
|
||||
}
|
||||
|
||||
fs.writeFile(destination, result.css.toString(), function(err) {
|
||||
if (err) {
|
||||
return emitter.emit('error', chalk.red(err));
|
||||
}
|
||||
|
||||
emitter.emit('info', chalk.green('Wrote CSS to ' + destination));
|
||||
emitter.emit('write', err, destination, result.css.toString());
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
if (sourceMap) {
|
||||
todo++;
|
||||
|
||||
fs.mkdir(path.dirname(sourceMap), {recursive: true}, function(err) {
|
||||
if (err) {
|
||||
return emitter.emit('error', chalk.red(err));
|
||||
}
|
||||
fs.writeFile(sourceMap, result.map, function(err) {
|
||||
if (err) {
|
||||
return emitter.emit('error', chalk.red('Error' + err));
|
||||
}
|
||||
|
||||
emitter.emit('info', chalk.green('Wrote Source Map to ' + sourceMap));
|
||||
emitter.emit('write-source-map', err, sourceMap, result.map);
|
||||
done();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
emitter.emit('render', result.css.toString());
|
||||
};
|
||||
|
||||
var error = function(error) {
|
||||
emitter.emit('error', chalk.red(JSON.stringify(error, null, 2)));
|
||||
};
|
||||
|
||||
var renderCallback = function(err, result) {
|
||||
if (err) {
|
||||
error(err);
|
||||
}
|
||||
else {
|
||||
success(result);
|
||||
}
|
||||
};
|
||||
|
||||
sass.render(renderOptions, renderCallback);
|
||||
};
|
Reference in New Issue
Block a user