123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- var fs = require('fs'),
- chalk = require('chalk'),
- sass = require('./'),
- path = require('path'),
- mkdirp = require('mkdirp');
- /**
- * Render
- *
- * @param {Object} options
- * @param {Object} emitter
- * @api public
- */
- module.exports = function(options, emitter) {
- var renderOptions = {
- imagePath: options.imagePath,
- 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,
- importer: options.importer
- };
- if (options.data) {
- renderOptions.data = options.data;
- } else if (options.src) {
- renderOptions.file = options.src;
- }
- renderOptions.success = function(result) {
- var todo = 1;
- var done = function() {
- if (--todo <= 0) {
- emitter.emit('done');
- }
- };
- if (options.stdout || (!options.dest && !process.stdout.isTTY) || options.stdin) {
- emitter.emit('log', result.css);
- return done();
- }
- emitter.emit('warn', chalk.green('Rendering Complete, saving .css file...'));
- mkdirp(path.dirname(options.dest), function(err) {
- if (err) {
- return emitter.emit('error', chalk.red(err));
- }
- fs.writeFile(options.dest, result.css, function (err) {
- if (err) {
- return emitter.emit('error', chalk.red(err));
- }
- emitter.emit('warn', chalk.green('Wrote CSS to ' + options.dest));
- emitter.emit('write', err, options.dest, result.css);
- done();
- });
- });
- if (options.sourceMap) {
- todo++;
- fs.writeFile(options.sourceMap, result.map, function(err) {
- if (err) {
- return emitter.emit('error', chalk.red('Error' + err));
- }
- emitter.emit('warn', chalk.green('Wrote Source Map to ' + options.sourceMap));
- emitter.emit('write-source-map', err, options.sourceMap, result.sourceMap);
- done();
- });
- }
- emitter.emit('render', result.css);
- };
- renderOptions.error = function(error) {
- emitter.emit('error', chalk.red(JSON.stringify(error, null, 2)));
- };
- sass.render(renderOptions);
- };
|