Skip to content

Commit

Permalink
update, added new param 'relativeUrl'
Browse files Browse the repository at this point in the history
  • Loading branch information
pavelpower committed Mar 3, 2015
1 parent ef809b5 commit dd2adfb
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 7 deletions.
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ css-less
* *Object* **variables** — Дополнительные переменные окружения для `less`.
* *String* **filesTarget** — files-таргет, на основе которого получается список исходных файлов
(его предоставляет технология `files`). По умолчанию — `?.files`.
* *Boolean* **relativeUrl** — создавать относительные пути (по умлочанию `true` - содавать)

**Пример**

Expand All @@ -47,6 +48,7 @@ css-less-with-autoprefixer
* *Array* **browsers** — Браузеры (опция автопрефиксера).
* *String* **filesTarget** — files-таргет, на основе которого получается список исходных файлов
(его предоставляет технология `files`). По умолчанию — `?.files`.
* *Boolean* **relativeUrl** — создавать относительные пути (по умлочанию `true` - содавать)

**Пример**

Expand All @@ -57,4 +59,5 @@ nodeConfig.addTech(require('enb-less/techs/css-less-with-autoprefixer'), {autopr
change list
----------------------------

* fixed trouble with relative path in less
* fixed trouble with relative path in less
* added param `relativeUrl` for replace url on css on relative
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "enb-less",
"version": "2.0.0",
"version": "2.0.1",
"description": "enb stylus techs",
"keywords": [
"enb",
Expand Down
28 changes: 23 additions & 5 deletions techs/css-less.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
* * *Object* **variables** — Дополнительные переменные окружения для `less`.
* * *String* **filesTarget** — files-таргет, на основе которого получается список исходных файлов
* (его предоставляет технология `files`). По умолчанию — `?.files`.
* * *Boolean* **relativeUrl** — создавать относительные пути (по умлочанию `true` - содавать)
*
* **Пример**
*
Expand All @@ -19,28 +20,42 @@
*/
var vow = require('vow');
var less = require('less');
var urlRegexp = /url\(['"]{0,1}([^'"\)]*)['"]{0,1}\)/gm;

module.exports = require('enb/techs/css').buildFlow()
.name('css-less')
.target('target', '?.css')
.defineOption('compress', false)
.defineOption('relativeUrl', true)
.defineOption('prefix', '')
.defineOption('variables')
.useFileList(['css', 'less'])
.builder(function (sourceFiles) {
var _this = this;
//var filename = this.node.resolvePath(this._target);
var defer = vow.defer();
var options = {};
var variables = this._variables;
var relativeUrl = this.relativeUrl;

var css = sourceFiles.map(function (file) {
var path = _this.node.relativePath(file.fullname);
if (file.name.indexOf('.less') !== -1) {

var body = require('fs').readFileSync(_this.node.resolvePath(path)).toString();

if (relativeUrl) {
var urls = body.match(urlRegexp);
if (urls !== undefined) {
body = body.replace(/url\(['"]{0,1}([^'"\)]*)['"]{0,1}\)/gm, 'url("' +
require('path').dirname(path) +
'/$1")');
}
}

// get body of less files, but relative @import is not normal work
return [
'/* ' + path + ':begin */\n',
require('fs').readFileSync(_this.node.resolvePath(path)).toString(),
body,
'/* ' + path + ':end */\n'
].join('');

Expand All @@ -49,14 +64,17 @@ module.exports = require('enb/techs/css').buildFlow()
}
}).join('\n');

if (this._variables) {
Object.keys(this._variables).forEach(function (key) {
options[key] = this._variables[key];
if (variables) {
Object.keys(variables).forEach(function (key) {
options[key] = variables[key];
}.bind(this));
}

less.render(css, options, function (err, css) {
if (err) {
// т.к. enb при сборке не показывает ошибок из reject
// придется отсавить тут console.log до update enb с фиксом этого бага
console.log(err);
defer.reject(err);
} else {
defer.resolve(css);
Expand Down

0 comments on commit dd2adfb

Please sign in to comment.