kopia lustrzana https://github.com/c9/core
Revert "Revert "Merge pull request +6755 from c9/mvh-upgrade-less-profile-account""
This reverts commit 6c01000fc9
.
pull/85/head
rodzic
6c01000fc9
commit
5890cd35df
|
@ -1,8 +1,9 @@
|
|||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
var async = require("async");
|
||||
var mkdirp = require("mkdirp");
|
||||
var async = require("async");
|
||||
var fs = require("fs");
|
||||
var less = require("less");
|
||||
var mkdirp = require("mkdirp");
|
||||
var moduleDeps = require("./module-deps");
|
||||
var path = require("path");
|
||||
|
||||
function build(config, opts, callback){
|
||||
if (!opts.configFile) {
|
||||
|
@ -157,7 +158,6 @@ function build(config, opts, callback){
|
|||
});
|
||||
}
|
||||
|
||||
// TODO
|
||||
function createOutputFolder(opts, cb) {
|
||||
var output = (opts.outputFolder || ".") + "/" + (opts.outputFile || "");
|
||||
output = path.dirname(output);
|
||||
|
@ -213,43 +213,80 @@ 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 less = require("less");
|
||||
var baseLib = lessPathLib(staticPrefix || libs.staticPrefix);
|
||||
var parser = new less.Parser({
|
||||
|
||||
var ctx = {
|
||||
paths: ["/"],
|
||||
filename: root + '/unknown.less',
|
||||
});
|
||||
|
||||
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/");
|
||||
compress: !!compress
|
||||
};
|
||||
|
||||
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);
|
||||
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);
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
function lessPathLib(staticPrefix) {
|
||||
if (!staticPrefix) return "";
|
||||
return "@base-path : \"" + staticPrefix + "\";\n"
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
"engine.io-client": "~1.5.1",
|
||||
"eslint": "git://github.com/cloud9ide/eslint.git#e2d052aafd81ea0aa6d1d4fd9f88f3613e386160",
|
||||
"http-error": "~0.0.5",
|
||||
"less": "~1.5.1",
|
||||
"less": "^2.4.0",
|
||||
"mime": "~1.2.9",
|
||||
"mkdirp": "~0.3.5",
|
||||
"msgpack-js": "~0.1.1",
|
||||
|
|
Ładowanie…
Reference in New Issue