Может ли SASS minifier удалить повторяющиеся стили?
Я знаю, что правила css довольно сложны; однако, не мог ли следующий css быть достаточно просто уменьшен оптимизатором несколькими способами? И если это так, есть ли возможность для этого в жемчужине рельсов?
span {
background: red;
color: green;
}
.test2 {
background: red;
color: green;
}
span {
background: green;
color: inherit;
}
.test2 {
background: inherit !important;
color: inherit;
color: inherit;
color: inherit;
}
Дополнительный контекст:
Чтобы помочь уточнить, я бы предложил следующее...
Источник:
span {
background: red;
}
span {
background: orange;
color: green;
}
span {
background: yellow;
}
span {
background: blue;
color: green;
}
И я бы хотел, чтобы компилятор сгенерировал следующее:
span {
background: blue;
color: green;
}
Я знаю, что существуют избыточные стили, но это происходит много раз, когда постоянно пересматривает стили, и я хочу удалить мертвый код.
Ответы
Ответ 1
Я думаю, что я, возможно, нашел способ, по крайней мере, найти дубликаты стилей в обоих CSS и sass/less шаблонах:
Исходный код csscss gem http://zmoazeni.github.io/csscss/
Похоже, что он способен обнаруживать дубликаты, хотя у меня есть патч обезьяны вокруг самоцвета самоцвета, который не находится в той же папке, что и мои ресурсы css.
Из документации вы можете запустить:
$ csscss -v path/to/styles.css
или
$ csscss -v path/to/styles.css.scss
Ответ 2
Не то, что я знаю, SASS будет только форматировать ваш код по-другому, но не оптимизировать его для вас http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#output_style
Расширяя комментарий Whymarrh, CSSTidy имеет утилиту командной строки, которая может быть интегрирована в процесс сборки или аналогичную, http://packages.ubuntu.com/hardy/csstidy
Ответ 3
Чтобы оптимизировать ваш код, всегда используйте параметр "-style compression" в вашей коммандной строке
Например:
sass --watch screen.sass --style compressed
SASS делает вашу жизнь намного проще, но в текущем состоянии невозможно добиться идеальной оптимизации, если вы не можете написать код ruby и напишите его самостоятельно. Есть некоторые обходные пути, которые могут выглядеть неудобно в вашем примере, но идея позади этого, чтобы сэкономить ваше время и не нужно вводить его самостоятельно.
например, возможно, вы можете оптимизировать свой код с помощью (пробелы также следует удалить)
этот подход:
span, .test2 {
background: red;
color: green;
}
вместо:
span {
background: red;
color: green;
}
.test2 {
background: red;
color: green;
}
в чистом CSS, поскольку он совместим с новым синтаксисом SASS
в SASS вы можете сделать это:
%theme-red-green { // i couldn't came up with better naming :)
background: red;
color: red;
}
span {
@extend %theme-red-green
}
.test2 {
@extend %theme-red-green
}
даже если мы не использовали стиль, разделенный запятыми, как в вашем простом CSS, он создавал бы оптимизированный код:
span, .test2 {
background: red;
color: green;
}
и не повторяйте один и тот же атрибут и значения:
span {
background: red;
color: green;
}
.test2 {
background: red;
color: green;
}
Вы заметили, что я использовал "% theme-" вместо ".theme-", что делает разницу в вашем выходе. Селектор классов будет включен в ваш выходной файл
и два ненужных свойства "цвета" со значениями "наследовать" не будут удалены даже в сжатом режиме.