mirror of
https://github.com/less/less.js.git
synced 2026-05-01 03:00:22 -04:00
Added error handling to file write for both css file and source map file.
#2408
This commit is contained in:
88
bin/lessc
88
bin/lessc
@@ -3,8 +3,15 @@
|
||||
var path = require('path'),
|
||||
fs = require('../lib/less-node/fs'),
|
||||
os = require('os'),
|
||||
errno,
|
||||
mkdirp;
|
||||
|
||||
try {
|
||||
errno = require('errno');
|
||||
} catch (err) {
|
||||
errno = null;
|
||||
}
|
||||
|
||||
var less = require('../lib/less-node'),
|
||||
pluginLoader = new less.PluginLoader(less),
|
||||
plugin,
|
||||
@@ -341,14 +348,67 @@ if (options.depends) {
|
||||
}
|
||||
|
||||
if (!sourceMapFileInline) {
|
||||
var writeSourceMap = function(output) {
|
||||
var writeSourceMap = function(output, onDone) {
|
||||
var filename = sourceMapOptions.sourceMapFullFilename;
|
||||
ensureDirectory(filename);
|
||||
fs.writeFileSync(filename, output, 'utf8');
|
||||
less.logger.info('lessc: wrote ' + filename);
|
||||
fs.writeFile(filename, output, 'utf8', function (err) {
|
||||
if (err) {
|
||||
var description = "Error: ";
|
||||
if (errno && errno.errno[err.errno]) {
|
||||
description += errno.errno[err.errno].description;
|
||||
} else {
|
||||
description += err.code + " " + err.message;
|
||||
}
|
||||
less.logger.error('lessc: failed to create file ' + filename);
|
||||
less.logger.error(description);
|
||||
} else {
|
||||
less.logger.info('lessc: wrote ' + filename);
|
||||
}
|
||||
onDone();
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
var writeSourceMapIfNeeded = function(output, onDone) {
|
||||
if (options.sourceMap && !sourceMapFileInline) {
|
||||
writeSourceMap(output, onDone);
|
||||
}
|
||||
};
|
||||
|
||||
var writeOutput = function(output, result, onSuccess) {
|
||||
if (output) {
|
||||
ensureDirectory(output);
|
||||
fs.writeFile(output, result.css, {encoding: 'utf8'}, function (err) {
|
||||
if (err) {
|
||||
var description = "Error: ";
|
||||
if (errno && errno.errno[err.errno]) {
|
||||
description += errno.errno[err.errno].description;
|
||||
} else {
|
||||
description += err.code + " " + err.message;
|
||||
}
|
||||
less.logger.error('lessc: failed to create file ' + output);
|
||||
less.logger.error(description);
|
||||
} else {
|
||||
less.logger.info('lessc: wrote ' + output);
|
||||
onSuccess();
|
||||
}
|
||||
});
|
||||
} else if (!options.depends) {
|
||||
process.stdout.write(result.css);
|
||||
onSuccess();
|
||||
}
|
||||
};
|
||||
|
||||
var logDependencies = function(options, result) {
|
||||
if (options.depends) {
|
||||
var depends = "";
|
||||
for(var i = 0; i < result.imports.length; i++) {
|
||||
depends += result.imports[i] + " ";
|
||||
}
|
||||
console.log(depends);
|
||||
}
|
||||
};
|
||||
|
||||
var parseLessFile = function (e, data) {
|
||||
if (e) {
|
||||
console.log("lessc: " + e.message);
|
||||
@@ -390,23 +450,11 @@ var parseLessFile = function (e, data) {
|
||||
less.render(data, options)
|
||||
.then(function(result) {
|
||||
if(!options.lint) {
|
||||
if (output) {
|
||||
ensureDirectory(output);
|
||||
fs.writeFileSync(output, result.css, 'utf8');
|
||||
less.logger.info('lessc: wrote ' + output);
|
||||
} else if (!options.depends) {
|
||||
process.stdout.write(result.css);
|
||||
}
|
||||
if (options.sourceMap && !sourceMapFileInline) {
|
||||
writeSourceMap(result.map);
|
||||
}
|
||||
if (options.depends) {
|
||||
var depends = "";
|
||||
for(var i = 0; i < result.imports.length; i++) {
|
||||
depends += result.imports[i] + " ";
|
||||
}
|
||||
console.log(depends);
|
||||
}
|
||||
writeOutput(output, result, function() {
|
||||
writeSourceMapIfNeeded(result.map, function() {
|
||||
logDependencies(options, result);
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
function(err) {
|
||||
|
||||
@@ -40,13 +40,14 @@
|
||||
"test": "grunt test"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"errno": "^0.1.1",
|
||||
"graceful-fs": "^3.0.5",
|
||||
"image-size": "~0.3.5",
|
||||
"mime": "^1.2.11",
|
||||
"request": "^2.51.0",
|
||||
"mkdirp": "^0.5.0",
|
||||
"source-map": "^0.1.x",
|
||||
"promise": "^6.0.1",
|
||||
"image-size": "~0.3.5"
|
||||
"request": "^2.51.0",
|
||||
"source-map": "^0.1.x"
|
||||
},
|
||||
"devDependencies": {
|
||||
"diff": "^1.0",
|
||||
|
||||
Reference in New Issue
Block a user