From 3f9d01ac2f023b505184fbfb3a7588ce7ae94cc0 Mon Sep 17 00:00:00 2001 From: Luke Page Date: Fri, 11 Jan 2013 22:29:46 +0000 Subject: [PATCH] optional dependencies should be loaded in a try-catch so they are actually optional --- bin/lessc | 11 ++++++++--- lib/less/index.js | 7 +++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/bin/lessc b/bin/lessc index 93d9d849..ae617e7b 100755 --- a/bin/lessc +++ b/bin/lessc @@ -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); } }; diff --git a/lib/less/index.js b/lib/less/index.js index 20a6c8e4..4005a74f 100644 --- a/lib/less/index.js +++ b/lib/less/index.js @@ -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;