Есть ли инструмент, который преобразует CSS в less.css?


21

У меня довольно большой CSS-файл, который я хочу преобразовать в меньший. Когда я писал CSS, я не знал less.css, но теперь я все еще хочу использовать свой старый CSS.

Есть ли инструмент, который может помочь мне преобразовать его автоматически?


см. мои правки ниже.
fatnjazzy

Вам следует проверить ответ @Simone Carletti и, возможно, немного рассказать о том, что вы действительно спрашиваете. Может не потребоваться никакого «преобразования», кроме переименования вашего файла.
Су '

Интересно, но мне интересно, стоит ли добавлять 33 КБ кода JS (less.js), чтобы уменьшить размер CSS-файлов.
Марко Демайо

1
Я не использую компилятор JavaScipt, очевидно. И размер CSS не является причиной, почему я использую его. Ремонтопригодность является причиной. :)
JS-кодер

Ответы:



15

На самом деле, вам не нужен инструмент для конвертации, чтобы начать работать с LESS. Синтаксис LESS обратно совместим с CSS . Это означает, что любой файл CSS также является допустимым файлом LESS.

Просто получите ваш CSS и переименуйте его в LESS файл. Затем используйте LESS-специфичные функции вместе со своими изменениями. Чем больше вы будете обновлять файл, тем больше вы сможете использовать функции LESS.

Я сделал то же самое для SCSS и очень большого проекта с 10 CSS-файлами. Было почти невозможно (и огромная трата времени) переписать весь CSS с помощью SCSS. Я просто переименовал его, а затем каждый раз, работая над файлом CSS, выполнял небольшой рефакторинг кода, чтобы использовать в своих интересах миксины, переменные и так далее.


Это поднимает действительно хороший вопрос. Пока что кажется, что ответы сосредоточены на «конвертировании» части вопроса, выполнении миксинов и т. Д., А не только на том, можно ли использовать текущий файл при переключении на рабочий процесс LESS.
Су '

6

Вы смотрели на наименее? Гораздо лучше конвертировать CSS, чем Lessify. В частности, Lessify не очень хорошо оптимизирует ваши занятия. Он скопировал браузер, сбрасывает все свои сгенерированные миксины, создавая избыточные атрибуты. Понятно, что это все еще на экспериментальной стадии. Ни одна из утилит не может определить семантику, поэтому они не могут конвертировать значения в выражения, переменные или параметрические миксины.

Наименее лучше оптимизирует работу и кажется более функциональной. Он даже обрабатывает псевдоклассы для вас:

http://toki-woki.net/p/least/

Эти инструменты идеально подходят для работы с большими существующими CSS-файлами. Вот шаги, которые я рекомендую для преобразования CSS в LESS (убедитесь, что вы сохранили копию оригинальных файлов CSS):

  1. Если вы работаете с несколькими аддитивными файлами CSS, объедините их в один файл CSS. Это гарантирует, что все МЕНЬШЕ и оптимизированы вместе.

  2. Запустите полученный CSS-код через онлайн-утилиту очистки CSS. У меня были хорошие результаты с cleancss: http://www.cleancss.com/ . Это удалит любую лишнюю и избыточную разметку, которая не может быть поймана LESS-конвертером.

  3. Удалите @Media и любой сброс стиля, который у вас есть в файле CSS. Они могут создавать проблемы или вносить возможные сокращения. Вероятно, это хорошая идея - хранить сбросы в отдельном файле.

  4. Вставьте полученный CSS-файл в Least и наблюдайте за зверем.

  5. Повторно представьте свои перезагрузки и @screen.

  6. Теперь, когда вы закончите, просмотрите все атрибуты и найдите подходящих кандидатов для рефакторинга и превратите их в переменные и выражения LESS. CSS-атрибуты цвета и шрифта легче всего выделить, простой глобальный поиск и замена отлично работает. В конце вы можете решить, хотите ли вы разбить один файл на более мелкие логические файлы. Вы можете обнаружить, что в результате этого процесса вы реорганизуете свои файлы другим способом.

Я не автор Least, просто кто-то искал подобный инструмент и решил рассказать об этом миру.


Эти конверторы не понимают @import? Я думал, что LESS смог проанализировать @importоператоры и объединить все ваши таблицы стилей в один CSS, когда ваши файлы LESS скомпилированы. Кажется, что сброс всего аккуратно организованного CSS в одну гигантскую таблицу стилей для преобразования его в LESS был бы шагом назад для удобства обслуживания.
Lèse Majesté

Они есть, но имейте в виду, что эти инструменты существуют онлайн, поэтому вам нужно вырезать и вставить их в текстовое поле, чтобы у него не было доступа к вашим внешним таблицам стилей.
Джоэл Роджерс

Ах, я на самом деле не нажимал на ссылки. Я предполагал, что они были настольными инструментами. Это имеет смысл тогда.
Lèse Majesté

5

Я не думаю, что у конвертера есть какой-либо способ узнать, что вы хотите делать с большей частью кода.

Например, он не обязательно будет знать, какие переменные вы хотите использовать. Или как генерировать миксины или функции.

Я думаю, что с этим вам нужно будет сделать это вручную.


Согласовано. Здесь требуется определенное количество выводов и знаний о ваших намерениях, к которым компьютеры просто не очень подходят. Вы сможете автоматизировать некоторые задачи (см. Ссылку на @dotweb) и, возможно, объединить такие вещи, как значения цвета, в одну переменную, но это, вероятно, об этом.
Су '

Да, но преобразование из LESS в CSS - это преобразование 1: 1, поэтому теоретически существует некоторый алгоритм, который может создавать оптимизированный код LESS из CSS ... Кто-то просто должен написать его.
trusktr

Миксины могут идти в любом направлении, поскольку компьютеру легко собирать и группировать селекторы вместе и вкладывать их. К счастью, это самая утомительная часть преобразования, и это вычислимо (см. Мой ответ). Несмотря на это, учитывая каскадный характер CSS, он может отображаться иначе, чем исходный CSS. Переменные и выражения невозможны. Компьютеры не могут определить намерение или семантику. Как компьютер может определить, что width: 400 в CSS на самом деле является width: pagewidth / 2 в LESS? Для преобразователя было бы возможно преобразовать цвета и шрифты в переменные.
Джоэл Роджерс

@JoelRodgers, почему каскадная природа CSS подразумевает, что «декомпиляторы» будут глючить? (Очевидно, что декомпилятор может содержать ошибки, но в принципе нетрудно сказать, изменит ли семантика переупорядочение терминов).
Питер Тейлор

Я говорю о классовых объявлениях и атрибутах. Вы должны объявить их в том же порядке, иначе у вас будут другие результаты. Плохая ошибка, я имел в виду Nested Rules вместо mixins.
Джоэл Роджерс

3

Как насчет поиска и замены.

если у вас есть, color:#ffffffи вы хотите изменить его на@color

просто найдите color:#ffffffили color : #ffffffи замените на @color.

Я обычно не доверяю этим инструментам.

или вы можете написать действительно простой скрипт PHP, который справится с этим.

Обновление 1 :
или вы можете использовать http://nex-3.com/posts/96-scss-sass-is-a-css-extension, который похож на less и имеет инструмент конвертера.


Да, я уже думал об этом. Но это довольно большой файл, поэтому я хочу убедиться, что это будет самый простой способ. ;) Подумайте о миксин и т. Д.

или вы можете написать действительно простой скрипт PHP, который справится с этим.
fatnjazzy

1
Вы не сможете найти инструмент, который надежно конвертирует чистый CSS в LESS mixins.
Алекс

Вы правы. Автоматические переменные и смешивание не имеют смысла.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.