veged/borschik — Issue #6: Сохранение относительных адресов изображений в CSS
Author: mekras
Created: 2012-02-06 19:04:58+00:00
State: open

Хотелось бы иметь возможность сохранять относительные адреса изображений (в background: url()) без изменений. Сейчас borschik, встретив в url() относительный адрес, пытается найти картинку относительно папки, где лежит обрабатываемый файл CSS, и заменить на адрес относительно положения итогового файла CSS. Это не всегда нужно. Например, в проекте могут использоваться CSS-спрайты, а сам код CSS может быть разложен по множеству папок как-то так:

* block1/
* block1.css
* block2/
* block2.css

и т. д. При этом на сайте это будет как-то так:

* all.css — итоговый CSS
* i/ — папка с картинками
* icons.png — спрайты.

И файл block1.css и файл block2.css могут содержать запись «background-image: url(i/icons.png)». Эта запись будет верна для боевого сайта. Однако в исходном дереве папок ни в block1, ни в block2 папки i не будет. Но borschik, встретив такую запись вылетит с ошибкой:

> Error: ENOENT, no such file or directory '/path/to/project/block1/i/icons.png'
> at Object.openSync (fs.js:230:18)
> at Object.readFileSync (fs.js:120:15)
> at [object Object].read (/usr/lib/node_modules/borschik/lib/tech.js:24:46)
> at [object Object].child (/usr/lib/node_modules/borschik/lib/tech.js:56:90)
> at Object. (/usr/lib/node_modules/borschik/lib/techs/css.ometajs.js:112:65)
> at Object. (/usr/lib/node_modules/borschik/lib/techs/css.ometajs.js:113:19)
> at Object._or (/usr/lib/node_modules/borschik/node_modules/cssp/node_modules/ometajs/lib/ometajs/core.js:292:59)
> at Object.uri (/usr/lib/node_modules/borschik/lib/techs/css.ometajs.js:89:25)
> at Object._apply (/usr/lib/node_modules/borschik/node_modules/cssp/node_modules/ometajs/lib/ometajs/core.js:203:58)
> at Object. (/usr/lib/node_modules/borschik/node_modules/cssp/src/cssptt.js:1785:25)