Использование инструментов написанных на других ЯП.

hell0w0rd

Продвинутый новичок
Код:
var gulp = require('gulp');
var less = require('gulp-less');
var plumber = require('gulp-plumber');

gulp.task('less', function() {
    gulp.src('test.less')
        .pipe(plumber())
        .pipe(less())
        .pipe(gulp.dest('public'));
});

gulp.task('build', ['less']);
gulp.task('default', ['build'], function() {
    gulp.watch('*.less', ['less']);
});
И все ок;)
 

Absinthe

жожо
Я в gulp шарю плохо, но мне не показалось, что ты запилил watch внутри default?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
grigori, фронтом занимаюсь большую часть времени, а после начальных этапов и вовсе это львиная доля времени. less ... нужен в первую очередь программистам, потом уж верстальщикам, потому и хочется, чтобы он взял проект и работал, а не запорачивался нодами, галпами, вотчами, assetiс требует только настройки конфига программистам, а дальше все билдится в автоматическом режиме при обращении к файлу.
Знаешь, мы начинали с автоматической компиляции LESS и публикации ассетов из приложения.
8 человек, из которых 4 без опыта работы с нодой, должны поднимать ноду на всех своих компьютерах на разных платформах, настраивать зависимости и помнить о путях. Это нереально, php-шники просто брали готовый css с production, кололись на конфликтах версий, но продолжали есть кактус.
Еще были проблемы с закешированным css и JS при каждом тестировании.

И я не могу представить зачем less backend-програмистам. Они пишут формы с теми элементами css, которые уже есть, а фронтэндщик запиливает их формы в интерфейс.
LESS нужен фронтэндщику. Но ему не нужно вызывать компиляцию из приложения, см пост фиксера.

Я все решил просто, прямо, в лоб. И LESS, и текущий компилированный их него css лежат в репозитории как часть приложения. Каждый работает с тем, что ему нужно.
Воможно, мне стоит написать статейку как я организовал взаимодействие front, back и выкладку с версиями.
 
Последнее редактирование:

AmdY

Пью пиво
Команда форума
grigori, c laravel-assetic таких проблем нет, less компилится php фильтром, обновления подхватываются автоматически, в путь добавляется гет с md5 файла, чтобы избежать проблем с кэшем. Есть вариант с js компиляцией less на клиенте. Так что это в любом случае не проблема и можно обходиться без ноды и гемороя. Когда на работе проталкивал были те же страшилки, которые развеиваются за пять минут реального использования. В пыхе только проблема со скоростью разбора и посерьёзнее - поддержкой некоторых конструкций.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
с js-компиляцией есть сомнения в производительности. да, php-фильтры для less я не видел.
laravel-assetic же недавно появились
 

fixxxer

К.О.
Партнер клуба
grigori, ну можно и в репоз комитить, да, многие так делают. Хотя мне это не нравится, очень легко получить рассинхрон. Проблемы установить ноду и запустить npm install ваще никакой, 5 минут потратить на копипаст из инструкции. gulp watch можно ваще не останавливать, после гит пулла само соберет.
 

fixxxer

К.О.
Партнер клуба
с js-компиляцией есть сомнения в производительности.
для разработки, в принципе, терпимо. Но тормозит, да.
да, php-фильтры для less я не видел.
Как минимум две реализации есть. Обе довольно тормозные. Я lessphp использовал, когда надо было во время компиляции дергать php-коллбэки.
 

hell0w0rd

Продвинутый новичок
Я в gulp шарю плохо, но мне не показалось, что ты запилил watch внутри default?
Именно так, но это же просто пример, хотя пример не далек от истины, обычно default - алиас для watch таска.
Еще, вдруг кому поможет: чтобы в цепочку складывать таски зависящие от цели сборки, есть плагин gulp-if. Используется примерно так:
Код:
var gulp = require('gulp');
var _if = require('gulp-if');
var plumber = require('gulp-plumber');
var sourcemaps = require('gulp-sourcemaps');
var less = require('gulp-less');
var autoprefixer = require('gulp-autoprefixer');
var csso = require('gulp-csso');

var production = process.env.NODE_ENV === 'production';

gulp.task('less', function () {
    gulp.src('src/less/**/*.less')
        .pipe(plumber())
        .pipe(_if(!production, sourcemaps.init()))
        .pipe(less())
        .pipe(autoprefixer())
        .pipe(_if(production, csso()))
        .pipe(_if(!production, sourcemaps.write()))
        .pipe(gulp.dest('public/css'));
});
 

hell0w0rd

Продвинутый новичок
8 человек, из которых 4 без опыта работы с нодой, должны поднимать ноду на всех своих компьютерах на разных платформах, настраивать зависимости и помнить о путях. Это нереально
vagrant.
То ты не работаешь с фронтендом совсем, то в формочки прописываешь нужные классы - тебя не поймешь.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
виртуалки - да, решение, одна проблема - на ноуте, с которого хочу весь день работать с аккума, я юзаю нативные nginx/php/mysql

к тому же vmware player для мака нет, а virtual box мне не нравится

это уже выходит на другой уровень сложности, компиляция css этого не стоит
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
grigori, ну можно и в репоз комитить, да, многие так делают. Хотя мне это не нравится, очень легко получить рассинхрон.
мир, вообще, идет по пути специализации.
есть конкретный человек, который собирает LESS, коммитит с него CSS, рассинхрона я не боюсь
Проблемы установить ноду и запустить npm install ваще никакой, 5 минут потратить на копипаст из инструкции. gulp watch можно ваще не останавливать, после гит пулла само соберет.
это тебе. год назад я устал слушать "у меня не работает less, дайте мне готовый css"
 

fixxxer

К.О.
Партнер клуба
ну я ж особо и не спорю. Просто не люблю результаты автогенерации в репозе, оно аукается рано или поздно. Тут каждый из двух зол выбирает меньшее исходя из конкретной ситуации :)
 

Absinthe

жожо
виртуалки - да, решение, одна проблема - на ноуте, с которого хочу весь день работать с аккума, я юзаю нативные nginx/php/mysql

к тому же vmware player для мака нет, а virtual box мне не нравится

это уже выходит на другой уровень сложности, компиляция css этого не стоит
Это проще.
Я верстальщика научил вагранту быстрее, чем если бы настраивал ему окружение сам.
И какая разница, VMWare или VirtualBox, если ты его интерфейса не видишь?
 

Redjik

Джедай-мастер
8 человек, из которых 4 без опыта работы с нодой
8 O_O :D

виртуалки - да, решение, одна проблема - на ноуте, с которого хочу весь день работать с аккума, я юзаю нативные nginx/php/mysql
к тому же vmware player для мака нет, а virtual box мне не нравится
это уже выходит на другой уровень сложности, компиляция css этого не стоит
1) Есть еще parallels
2) То, что ты хочешь сэкономить СЕБЕ час работы ноута не должно влиять на удобство разработки КОМАНДЫ, вагрант решает, я серьезно, попробуй поиграться
3) И интерфейс ты реально не видишь, VirtualBox кстати умнее работает с "внезапными перезагрузками". Я обычно ленюсь виртуалку вырубать, когда комп выключаю, так после VMWare постоянно лок файлы вычищаю. С VB такого не было.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Redjik, а кто по-твоему решает что хорошо, а что нет, что должна делать команда, а что не должна? я решаю.

я разрабатываю в виртуалках намного дольше, чем большинство здесь отписавшихся, и никак не против вагранта или удобных новых тулзов типа фильтров на php, но причинять пользу и заставлять в моем случае смысла нет, вопрос решен, дальше видно будет,
не модно, не стильно, не молодежно, но решен

и да, личное - в личку, про людей могу напомнить
 
Последнее редактирование:

Redjik

Джедай-мастер
grigori, а как же задачи бизнеса?
подойди к бизнесу и спроси, что выбираешь - Vagrant или +1 час работы аккума? :D

Странная позиция. Вам все равно в течении года надо будет переезжать на другой сервер (ибо вы храните личные данные, а они должны быть на территории рф)
Чтобы не гемориться с переездом нужно все через puppet делать, а чтобы к Vagrant привязать, через puphet, это займет день у админа/devops.

без опыта работы с нодой
и кстати, для всех этих новомодных плюшек, опыт работы с нодой не нужен - нужно базовое знание Linux о том как ставить пакеты
и как бэ получается - ребята настраивайте php, это легко, но не настраивайте ноду, это тяжело - так чтоли?
npm + grunt ставится в две строчки блин :D

и раз уж у вас такая ситуация сложилась, что народ не может настроить себе виртуалки, то давайте жевать дальше кактус, пускай 8 человек мучаются с Linux, зато акум, как Ленин, живее всех живых
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Redjik, без обид, но тебя слушать весело. Сразу чувствуется... обилие теории о "задачах бизнеса". Но не практики.
 

Redjik

Джедай-мастер
Эм, ну это твое мнение, я порой в рассуждениях пропускаю часть цепочки, которая и так очевидна.
Задача бизнеса:
1) Сайт должен работать, чтобы приносить прибыль
2) Сайт должен развиваться, чтобы приносить больше прибыли
3) Минимизация издержек на поддержку и развитие.

Следующая часть цепочки, которая напрямую связана с задачами бизнеса.
a) Приложение необходимо подготовить к перезду на новый сервер с минимальным downtime. В связи с законом о хранении данных. (Иначе сайт не будет работать см. пункт 1)
b) Необходимо настроить инструменты, для более быстрого разворачивания рабочего оркужения программистами. (Это уже статья минимазции издержек, см пункт 3 ... ну или оплачивать новым разрабам по 10 часов за настройку окружения)

И наконец финальный вывод.
Vagran + Puppet, чтобы покрыть a,b

Ну по крайней мере у нас оно именно так работает.
 
Сверху