После наследования проекта с использованием Grunt я запускаю grunt через терминал, ожидая, пока «Наблюдение...» внесет изменение в scss, и терминал распознает изменение, но на следующем этапе компаса: dev компиляция завершается неудачно. Вот что он показывает внутри терминала:
Waiting...
>> File "../sass/inside.scss" changed.
Running "compass:dev" (compass) task
unchanged ../img/common/1x-scb9effd9a6.png
unchanged ../img/common/2x-s7bf9cb0f59.png
error /Applications/MAMP/htdocs/Repos/wp-content/themes/quindo/_/sass/inside.scss (Line 39 of /Applications/MAMP/htdocs/Repos/wp-content/themes/quindo/_/sass/vendor/retina/_sprite.scss: List index is 2 but list is only 1 item long for `nth')
Compilation failed in 1 files.
О. Итак, я смотрю на строку 39 файла ...vendor/retina/_sprite.scss, которая является строкой @if следующей функции, и обнаружил, что функция содержит $index: 2. Какова цель установки значения 2 ?
@mixin retina-sprite($name, $sprite-name: 0, $hover: false, $active: false) {
$index: 2;
$len: length($retina-sprite-names);
@for $i from $index through $len {
@if $sprite-name == nth($retina-sprite-names, $i) {
$index: $i;
}
}
$sprite : nth($retina-sprite-sprites, $index);
$sprite-url : nth($retina-sprite-urls, $index);
$sprite2x : nth($retina-sprite-sprites2x, $index);
$sprite-url2x : nth($retina-sprite-urls2x, $index);
@include _retina-sprite($name, $sprite, $sprite-url, $sprite2x, $sprite-url2x, $hover, $active);
}
B. Чтобы изменить scss на css, мне просто изменить вышеупомянутые 2 на 1? Я не совсем понимаю последствия этого заявления.
БИ 2. Я проверил эту теорию изменения 2 на 1, и получаю ошибки о том, что sprite-position() должна быть картой спрайтов. Должен ли я просто попытаться запустить grunt с сервера разработки, дождаться «просмотра...», а затем загрузить измененный файл .scss, думая, что разработчик запускал grunt с сервера разработки, а не локально?
Б3. Кажется, он был построен на: https://github.com/novascreen/Retina-mixins-for-Compass/blob/master/src/retina/_retina-sprite.scss
nth()
в следующей строке. Он пытается выбрать 2-й элемент списка, который содержит только 1 элемент. Однако я не вижу причин, по которым они хотели бы начать со 2-го элемента, поэтому изменение его на 1 может вызвать нежелательные побочные эффекты. - person cimmanon   schedule 29.10.2014$retina-sprite-names
, поэтому я предполагаю, что они пытаются получить доступ к переменной, которая существует вне области действия этого миксина (т.е. глобальной). Область видимости изменена в Sass 3.4, поэтому глобальные переменные не видны в миксинах, если они не указаны явно. - person cimmanon   schedule 29.10.2014