[Compiler] Компиляция SCSS файлов в бекенде
Пакет компилирует SCSS в CSS код при сохранении файла в бек-энде MODX.
Пока умеет работать только с SCSS файлами, но т.к. написан на основе Munee, то в будущем будет расширен до всех возможностей оной (кроме изображений).
Список настроек, связанных с SCSS:
- Папка для обработки SCSS файлов
Файлы из этой папки будут обработаны компонентом при сохранении.
- Папка для сохранения CSS
В эту папку будут сохранены скомпилированные CSS файлы.
- Компилировать файлы из подпапок?
Помимо файлов из основной директории, указанной в настройке «compiler_scss_dir_from», будут скомпилированы при сохранении и файлы, находящиеся в субдиректориях.
- Пропускать файлы, начинающиеся с прочерка?
Файлы, имена которых начинаются с прочерка "_" компилироваться не будут.
Скачать пакет в modStore.pro
Поблагодарить автора
Отправить деньги
Комментарии: 58
ждемс испытать
Добавил в modStore. Ждём модерации.
Спасибо, Леонид!
А как долго ждать в «установщике приложений»?
Там только LessCss выдает, когда вводишь Compiler.
Там только LessCss выдает, когда вводишь Compiler.
Речь про modstore? Компонент есть только там.
я имею ввиду из админки сайта его как загрузить?
Также, как и любой другой пакет из репозитория modStore.
спасибо, просто поставщика не выбрал)) поэтому в поиске не выводил результаты )) первый раз загружаю дополнения ))
Круто! Давно хотелось, чтобы что-то подобное было под MODX.
Павел, было бы большим плюсом, если бы вы на примерах показали работу компонента.
из моего опыта — нужно открыть и сохранить любой scss файл из папки, которую вы указали в настройках, после этого соберется файл css в папке. которую вы указали для css файла. и уже этот файл вы обыкновенным образом вызываете на странице
Ну да, всё верно. Нет никаких сниппетов, чанков. Есть только плагин, который отлавливает события сохранения/обновления файла из бек-энда.
Круто!, недавно воротил gulp + sass в беке мода, но нифига не вышло, а тут гляди подкатило, низкий поклон! Будем пробовать)
Есть файл test.scss, в него импортируется _test2.scss. Когда редактирую и сохраняю _test2.scss, чтобы данные обновились, нужно зайти в test.scss и сохранить еще и его. Это не очень удобно… можно что-то сделать с этим?
Пропускать файлы, начинающиеся с прочерка?
Файлы, имена которых начинаются с прочерка "_" компилироваться не будут. это в описании есть
Файлы, имена которых начинаются с прочерка "_" компилироваться не будут. это в описании есть
Нет, нето…
Когда сохраняю файл "_*.scss", нужно чтобы перекомпилировались другие файлы, в которых этот файл импортируется (@import "_*.scss")
Когда сохраняю файл "_*.scss", нужно чтобы перекомпилировались другие файлы, в которых этот файл импортируется (@import "_*.scss")
Можно. Я уже думаю над решением. В обновлении поправлю это.
Спасибо!
Ещё может как-то можно сделать, когда правишь scss вне админки, чтобы компилировался, например MinifyX проверяет файл на изменение)
MinifyX компилирует, а не проверяет… компилирует при загрузке страницы, когда сниппет вызывается… если сниппет закешен, то MinifyX тебе ничего не скомпилирует.
А тут как это сделать? Нет, вряд ли такое получится. Данный инструмент не претендует на замену MinifyX или замену IDE редактора. Это всего лишь пакет, который позволяет скомпилировать, пока только, SCSS при сохранении файла из бек-энда. Если надо компилировать вне админки — настрой проект в каком-нибудь Саблайме или Шторме и компилируй.
А тут как это сделать? Нет, вряд ли такое получится. Данный инструмент не претендует на замену MinifyX или замену IDE редактора. Это всего лишь пакет, который позволяет скомпилировать, пока только, SCSS при сохранении файла из бек-энда. Если надо компилировать вне админки — настрой проект в каком-нибудь Саблайме или Шторме и компилируй.
А если при сохранении любого файла из заданной папки scss компилировать все файлы в этой папке, это сильно ресурсозатратная операция будет?
Смотрел проекты Slic, Fontawesome, Bootstrap… там как правило только один файл без "_", в котором подключаются остальные.
Смотрел проекты Slic, Fontawesome, Bootstrap… там как правило только один файл без "_", в котором подключаются остальные.
Сильно. И по времени тоже. Есть вариант: при сохранении основного файла записывать все импортируемые в него файлы в таблицу, а далее, если сохраним один из этих файлов — ищем его в этой таблице и пересохраняем основной файл. Сейчас пока времени на реализацию нету.
Как дела в данном направлении? ) Дошло до реализации идеи? )
К сожалению, некогда этим заниматься.
столкнулся с такой проблемой:
вот такой код
codepen.io/anon/pen/JKgRNd
вот такой код
%test-background{
background: rgba(0,0,0,0.1);
}
.div{
@extend %test-background;
&__div{
@extend %test-background;
}
}
компилируется в.div, __div.div {
background: rgba(0, 0, 0, 0.1);
}
Хотя тот же код в CodePen компилируется нормальноcodepen.io/anon/pen/JKgRNd
.div, .div__div {
background: rgba(0, 0, 0, 0.1);
}
Проблема возникает только при использовании @extend в &__div
Спасибо за оперативность! :)
Заработало как надо! :)
Заработало как надо! :)
[2016-10-18 19:38:26] (ERROR @ /srv/site.ru/core/components/compiler/model/compiler/compiler.class.php: 89) [Compiler] Error in SCSS Compiler: Undefined variable $i: line: 48
Этот код из bootstrap 4
Koala компилирует нормально, без ошибок
Этот код из bootstrap 4
Koala компилирует нормально, без ошибок
@for $i from 1 through $columns {
.col-#{$breakpoint}-#{$i} {
@include make-col($i, $columns); //line 48
}
}
Можно ссылку на Bootstrap 4 SCSS? Что-то я найти его не могу.
Понимаю, что бесчеловечно затянул. Тем не менее сообщу, что данный баг поправлен в версии 1.0.5.
Запоздалое спасибо))
Подскажите пожалуйста… Если возможность обновить css файл, который берёт данные у файла scss файла в ручную? К примеру через Consol.
Сейчас это работает вручную, хочется также научиться обновлять файлы в своих скриптах
Сейчас это работает вручную, хочется также научиться обновлять файлы в своих скриптах
Не ясен вопрос, опишите конкретнее.
как обновить css файл, когда я уже сделал изменения в файле scss, не через плагин (в данном случае при сохранение файла scss), а через php-скрипт
Вообщем я разобрался, как работать с классом. Всё хорошо отрабатывается, только предупреждение есть:
[2016-11-09 12:33:41] (WARN @ /www/core/xpdo/xpdo.class.php : 542)
Could not load package metadata for package compiler.
Поправил в версии 1.0.5.
а можно поподробнее? вдруг тоже пригодится))
Крутотень.Большое спасибо.
Как новичок в использовании SCSS, никак в толк не возьму, зачем отдельно компилировать мой SCSS в CSS, я подключаю файл в minifyx и все прекрасно работает. Ну конечно я понимаю вопрос с кэшированием. Кроме этого разница есть между Compiler и Minifyx?
Разница в том, что Compiler собирает CSS в момент сохранения файла, а MinifyX в момент обращения к странице. То есть, если надо скомпилить большой SCSS, то это будет происходить на стороне юзера, пусть и единожды (до сброса кеша), но это не очень приятно будет для него.
P.S.: А вообще, лучше отдавать генерацию SCSS какому-нибудь Gulp или PostCSS, если такая возможность есть. Compiler был написан, как раз для того, чтобы генерировать CSS из SCSS по-быстрому на рабочем проекте, на котором нет возможности поднять NodeJS.
P.S.: А вообще, лучше отдавать генерацию SCSS какому-нибудь Gulp или PostCSS, если такая возможность есть. Compiler был написан, как раз для того, чтобы генерировать CSS из SCSS по-быстрому на рабочем проекте, на котором нет возможности поднять NodeJS.
А почему нельзя было в Console запустить сниппет? Гораздо быстрее, чем ваять новый компонент.
К чему этот вопрос, Сергей?
Только у меня код
@import '_media';
вместо включения этого файла в основной импортируется так:@import url("/assets/path/src/scss/_media");
?
@import 'media';
@import 'media'; // вызываю
@import url("/assets/path/src/scss/media"); // получается
@import 'media.scss'; // вызываю
@import url("/assets/path/src/scss/media.scss"); // получается
@import '_media.scss'; // вызываю
@import url("/assets/path/src/scss/_media.scss"); // получается
@import '_media'; // вызываю
@import url("/assets/path/src/scss/_media"); // получается
Чувствую дело не в написании, просто не инклудится файл — приходится всё писать в одном файле.
Весь же остальной SCSS-код работает безупречно.
У меня вот так на одном проекте сделано…
Есть файлы
В main.scss написано:
В настройках:
Все работает нормально при компиляции main.scss
Есть файлы
/assets/styles/scss/main.scss
/assets/styles/scss/_filename1.scss
/assets/styles/scss/_filename2.scss
В main.scss написано:
@import 'filename1';
@import 'filename2';
В настройках:
compiler_scss_dir_from = /assets/styles/scss/
compiler_scss_dir_to = /assets/styles/css/
compiler_scss_skip_underscore = true
compiler_scss_with_subdirs = true
Все работает нормально при компиляции main.scss
Т.е. его содержимое переносится при компиляции.так в том-то и дело, что у меня содержимое не переносится и на выходе получается обычный @import, вместо переноса содержимого в 1 файл.
P.S. Короче, создал тестовый сайт на модхосте и потестировал по-разному — импорт выполняется полноценно. Я же работал на другом хостинге (hvosting.ua), видно хостинг какой-то левый, что-то там нужное не включено…
Интересно, что требуется от хостинга, чтобы работал правильно @import?
ХЗ, последнее что приходит в голову — удалить и установить компонент заново ))
Ну и еще раз посмотреть в документацию, может чего найдешь полезного ))
sass-scss.ru/documentation/pravila_i_direktivi/direktiva_import.html
П.С. у меня @import 'filename' идет в самом верху после импорта *.css. Может как то влияет тоже?)))
Ну и еще раз посмотреть в документацию, может чего найдешь полезного ))
sass-scss.ru/documentation/pravila_i_direktivi/direktiva_import.html
П.С. у меня @import 'filename' идет в самом верху после импорта *.css. Может как то влияет тоже?)))
Есть ли такой же компонент, который во время сохранения js-файлов из какой-то папки компилировал бы один сжатый js, который можно будет потом подключать к сайту?
То есть чтобы он работал по принципу Compiler — компилировал не как MiniFix на ходу, а во время сохранения файла.
То есть чтобы он работал по принципу Compiler — компилировал не как MiniFix на ходу, а во время сохранения файла.
Если бы Павел добавил в Compiler возможность сжимать и js-ки, было бы удобно!
у плагина есть возможность генерации souce map?
Нет.
На PHP7.0 никто не наблюдал ошибок?
При сохранении висит «Подождите». Скрипт вешается на точке
При сохранении висит «Подождите». Скрипт вешается на точке
$cssData = $Compiler->Munee($pathinfo['dirurl'] . $pathinfo['basename']);
А в логе ошибок PHP что?
Как мне не хватало такой штуки, жаль, что только сейчас додумался поискать, спасибо огромное )
Правда заметил, что calc при компиляции игнорируется
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.