Как объединить файлы .CSS с Sass (или другим инструментом)?

Я могу использовать Sass для компиляции нескольких входных файлов .SCSS или .SASS в один выходной файл .CSS с помощью @import as описанный здесь.

Если я использую @import для включения обычных файлов .CSS, они не объединены. Выходной файл .CSS по-прежнему содержит директивы @import. Это имеет смысл.

Но есть ли способ переопределить это поведение, возможно, переключение командной строки на компилятор Sass? Другими словами, могу ли я сказать Sass, чтобы попытаться принудительно объединить @import "foo.css"; так же, как если бы это был файл .SCSS?

Я использую стороннюю библиотеку (Google Closure Library) со многими файлами .CSS. Я использую только некоторые из них в своем проекте. Я бы предпочел избегать ручных решений, таких как переименование всех этих файлов как .SCSS(хотя это, похоже, работает), или копирование и вставка их содержимого в мой .SCSS файл (также работает). И я не хочу обслуживать их всех для импорта на стороне клиента. Я бы просто хотел, чтобы Sass включил несколько .CSS файлов, которые я использую как "как есть", и создаю единую таблицу стилей вывода. Возможное? Есть ли другие инструменты, на которые я должен смотреть?

Ответ 1

Я не нашел способ сделать это в Sass.

Мое обходное решение заключается в том, чтобы импортировать библиотеки третьей части непосредственно из их URL-адресов. Конечно, это работает только для библиотек CSS, которые обслуживаются через URL-адреса. Он по-прежнему импортирует несколько файлов, но по крайней мере мне не нужно переименовывать файлы и иным образом управлять модифицированной копией библиотеки CSS поставщика.

Пример:

// ORIGINAL: locally managed, modified copy (bad), no @import in output (good)
@import 'my_modified_copy/closure/goog/css/common.scss';

// WORKAROUND: vendor-managed (good): @import in output (bad but acceptable)
@import 'http://closure-library.googlecode.com/svn/trunk/closure/goog/css/tab.css';

Перед выпуском я, вероятно, добавлю script, чтобы вытащить текущую версию от поставщика и переименовать все .css файлы в виде .scss файлов. Но на данный момент вышеупомянутое обходное решение приемлемо для разработки.

Ответ 2

каждый файл CSS также является допустимым SCSS.. поэтому, если вы меняете файлы, которые вам "невидимо" импортируются или объединяются в _filename.scss, а затем @import из основного файла scss с помощью @import "filename"; (расширение необязательно), оно должно компилироваться к одному большому CSS без инструкций @import внутри него

отредактирован, чтобы добавить: извините, просто увидел ваше редактирование после сбоя браузера.. и не смотрите на то, что вы ищете, я не знаю другого пути

Ответ 3

Это может быть сделано на стороне сервера и сэкономить вам немного хлопот, если это вариант. Поскольку вы просто объединяете файлы вместе, и поскольку это просто CSS, не должно быть конфликтов в информации, которая должна нанести вред вашему сайту. Кроме того, этот способ дает вам гибкость в обновлении CSS в качестве улучшенных фреймворков.

Ruby - не мой язык выбора, но все же очень жизнеспособный, чтобы делать все необходимое здесь. В Ruby есть инструмент, который будет делать это для вас с помощью CSS, а также JS файлов. Взгляните на это сообщение в блоге, чтобы получить краткое изложение: http://cjohansen.no/en/ruby/juicer_a_css_and_javascript_packaging_tool

Я надеюсь, что это будет полезно, и, пожалуйста, дайте мне знать, если вам нужно что-нибудь еще на этом.