diff --git a/node_modules/architect-build/build.js b/node_modules/architect-build/build.js index f59581f3..48888813 100644 --- a/node_modules/architect-build/build.js +++ b/node_modules/architect-build/build.js @@ -1,9 +1,8 @@ -var async = require("async"); -var fs = require("fs"); -var less = require("less"); -var mkdirp = require("mkdirp"); +var fs = require("fs"); +var path = require("path"); +var async = require("async"); +var mkdirp = require("mkdirp"); var moduleDeps = require("./module-deps"); -var path = require("path"); function build(config, opts, callback){ if (!opts.configFile) { @@ -158,6 +157,7 @@ function build(config, opts, callback){ }); } +// TODO function createOutputFolder(opts, cb) { var output = (opts.outputFolder || ".") + "/" + (opts.outputFile || ""); output = path.dirname(output); @@ -213,78 +213,41 @@ function compileLess(opts, sources, callback) { }); } - -function compileLibRules(libs, ctx, next) { - // Libs is an array of paths; adds property .compiled to keep a state(cache). - if (libs.compiled) - return next(null, libs.compiled.rules, libs.compiled.css); - - var src = lessPathLib(libs.staticPrefix) + libs.join("\n"); - - less.parse(src, ctx, function(err, root, imports, options) { - if (err) return next(err); - - toCss(root, imports, options, function(err, css) { - if (err) return next(err); - - libs.compiled = { - rules: root.rules, - css: css, - }; - - next(null, libs.compiled.rules, libs.compiled.css); - }); - }); -} - function compileLessFragment(css, libs, root, staticPrefix, path, compress, callback) { - - var ctx = { + var less = require("less"); + var baseLib = lessPathLib(staticPrefix || libs.staticPrefix); + var parser = new less.Parser({ paths: ["/"], filename: root + '/unknown.less', - compress: !!compress - }; - - compileLibRules( libs, ctx, function(err, libRules, libCss) { - if (err) return callback(err); - - var baseLib = lessPathLib(staticPrefix || libs.staticPrefix); - var code = baseLib + "\n" + css; - - // Complete paths, but not subdirectories like foo/images/bar.png - code = code.replace(/(["(])(images|icons)\//g, "$1" + staticPrefix + "/$2/"); - - console.log("[Less] compiling ", path || "skin", root); - - less.parse(code, ctx, function (err, tree, imports, options) { - if (err) return callback(err); - tree.rules = libRules.concat(tree.rules); - - toCss(tree, imports, options, function(err, css) { - if (err) return callback(err); - - if (css.substring(0, libCss.length) == libCss) { - css = css.substr(libCss.length); - } else { - console.warn("couldn't strip default less"); - } - callback(null, css); - - }); - }); }); -} + + if (!libs.compiled) { + parser.parse(lessPathLib(libs.staticPrefix) + libs.join("\n"), function(err, tree) { + libs.compiled = tree; // actually parse isn't async + }); + + libs.css = libs.compiled.toCSS().trim(); + } + // Parse Less Code + var code = baseLib + "\n" + css; + + // Complete paths, but not subdirectories like foo/images/bar.png + code = code.replace(/(["(])(images|icons)\//g, "$1" + staticPrefix + "/$2/"); -function toCss(tree, imports, options, callback) { - var parseTree = new less.ParseTree(tree, imports); - var css; - try { - css = parseTree.toCSS(options).css; - } - catch (err) { - return callback(err); - } - callback(null, css); + console.log("[Less] compiling ", path || "skin", root); + parser.parse(code, function (err, tree) { + if (err) + return callback(err); + if (libs.compiled) + tree.rules = libs.compiled.rules.concat(tree.rules); + var css = tree.toCSS({ compress: compress }); + if (libs.css && css.substring(0, libs.css.length) == libs.css) { + css = css.substr(libs.css.length); + } else { + console.warn("couldn't strip default less"); + } + callback(null, css); + }); } function lessPathLib(staticPrefix) { diff --git a/package.json b/package.json index aa9cdd22..5840e5b9 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "engine.io-client": "~1.5.1", "eslint": "git://github.com/cloud9ide/eslint.git#e2d052aafd81ea0aa6d1d4fd9f88f3613e386160", "http-error": "~0.0.5", - "less": "^2.4.0", + "less": "~1.5.1", "mime": "~1.2.9", "mkdirp": "~0.3.5", "msgpack-js": "~0.1.1",