optional dependencies should be loaded in a try-catch so they are actually optional

This commit is contained in:
Luke Page
2013-01-11 22:29:46 +00:00
parent 6308dc06bd
commit 3f9d01ac2f
2 changed files with 13 additions and 5 deletions

View File

@@ -2,9 +2,9 @@
var path = require('path'),
fs = require('fs'),
mkdirp = require('mkdirp'),
sys = require('util'),
os = require('os');
os = require('os'),
mkdirp;
var less = require('../lib/less');
var args = process.argv.slice(1);
@@ -129,9 +129,14 @@ if (! input) {
var ensureDirectory = function (filepath) {
var dir = path.dirname(filepath),
cmd = mkdirp && mkdirp.sync || fs.mkdirSync,
cmd,
existsSync = fs.existsSync || path.existsSync;
if (!existsSync(dir)) {
if (mkdirp === undefined) {
try {mkdirp = require('mkdirp');}
catch(e) { mkdirp = null; }
}
cmd = mkdirp && mkdirp.sync || fs.mkdirSync;
cmd(dir);
}
};

View File

@@ -1,7 +1,7 @@
var path = require('path'),
sys = require('util'),
url = require('url'),
request = require('request'),
request,
fs = require('fs');
var less = {
@@ -137,7 +137,10 @@ less.Parser.importer = function (file, paths, callback, env) {
var isUrl = isUrlRe.test( file );
if (isUrl || isUrlRe.test(paths[0])) {
if (request === undefined) {
try { request = require('request'); }
catch(e) { request = null; }
}
if (!request) {
callback({ type: 'File', message: "optional dependency 'request' required to import over http(s)\n" });
return;