Я ищу цепочку плагинов для использования с Gulp, которая обеспечивает:
- поддержка исходной карты
- меньше
- минификация
- конкатенация
- Замена URL-адреса (перебазирование) для решения проблемы перемещения/конкатирования
В настоящее время у меня есть первые четыре, но я не могу найти комбинацию существующих плагинов, которая также даст мне последний (перебазирование URL). Я не нашел каких-либо плагинов для перебазирования URL-адресов, которые выдают исходные карты.
Просто чтобы прояснить, моя проблема заключается в том, что когда я компилирую несколько небольших файлов CSS из папок разработки моего проекта и вывожу их в общую папку, перемещение, возникающее в результате конкатенации, нарушает относительные URL-адреса, например, для фоновых изображений.
РЕДАКТИРОВАНИЕ:
Похоже, цепочка инструментов, которую я сейчас использую, уже предназначена для решения этой проблемы. Итак, это якобы ответ. Однако возникает другой вопрос: как должен работать требуемый синтаксис.
Этот вопрос теоретически имеет много дубликатов:
- clean-css #152: функциональность перебазирования очень разочаровывает
- clean-css #195: опция
root
в Windows - clean-css #263: Как заставить параметр relativeTo работать с файлами CSS по разным путям а>
- http://adilapapaya.com/docs/clean-css/#howtorebaserelativeimageurls
- Grunt cssmin перебазирует относительный URI?
К сожалению, ответы не объясняют синтаксис, они просто демонстрируют вуду; поэтому я не знаю, почему следующее не работает. Если я смогу решить эту проблему, я вернусь сюда и отмечу, что это принято, чтобы указать, что эта цепочка инструментов действительно делает то, что мне нужно.
Исходные файлы:
/assets
/site
styleInput1.less "url(../site/logo.png)"
logo.png
background.png
/application
styleInput2.less "url(../site/background.png)"
Глотковая задача:
gulp.task(filename, function () {
return gulp.src(files)
.pipe(sourcemaps.init())
.pipe(less())
.pipe(minifyCss({ relativeTo: './compiled' }))
.pipe(concat(filename))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./compiled'));
});
Вывод с неработающими URL-адресами. Обратите внимание на множественные дефекты. Несмотря на то, что уровень каталога CSS повышен относительно требуемых ресурсов, был добавлен дополнительный родительский каталог (!). Кроме того, на одном из URL-адресов было изменено имя папки с физическими активами (!). Очень странно:
/compiled
styleOutput1.css "url(../../compiled/logo.png)"
styleOutput2.css "url(../../site/background.png)"
Приношу свои извинения за продолжение колдовства, но вот моя рабочая глотка:
.pipe(minifyCss({ relativeTo: './compiled', target: './compiled' }))
И правильный вывод:
/compiled
styleOutput1.css "url(../assets/site/logo.png)"
styleOutput2.css "url(../assets/site/background.png)"