0

Я использую gulp с livereload, less и другими на удаленном сервере. Я успешно использовал глоток во много раз и никогда не испытывал этого сценария.Gulp with WinSCP - livereload и less

Я использую WinSCP для сохранения/редактирования файлов (я дважды щелкаю по файлу, и он открывается в Sublime Text ... Я сохраняю его, WinSCP автоматически загружает его обратно на сервер).

Однако при выполнении этого способа gulp-less не работает почти все время. У меня есть два основных файла CSS, которые скомпилированы: один - это Bootstrap, а один - мой собственный. Оба они должны быть скомпилированы с собственными задачами gulp при модификации, но Bootstrap терпит неудачу каждый раз, а другой файл выходит из строя примерно в половине случаев.

Когда я говорю, не удается, вот что я имею в виду - с Bootstrap я всегда получаю ту же ошибку:

variable @grid-columns is undefined in file ....grid.less line no. 48 

Это происходит, даже если я определяю @grid-columns в качестве первого заголовка в моем главном файле Bootstrap «импорт» ,

В противном случае livereload перезагружает скомпилированный CSS в некоторый момент до скомпилированного файла Less. Это должно быть невозможно, но так или иначе.

Однако, когда из командной строки SSH я печатаю touch myfile.less или touch anybootstrapfile.less, все работает отлично.

Очевидно, что это очень раздражает, но его пригодно для жизни. Я думаю, что должен быть какой-то способ исправить это. Любые идеи о том, что в мире могут сделать это, и что (если угодно), я мог бы сделать, чтобы исправить это?

ответ

1

Скорее всего, когда WinSCP загружает файл после его сохранения во внутреннем редакторе, он устанавливает отметку времени загруженного файла старше, чем раньше.

Это может быть особенно актуально, если вы используете протокол FTP или Windows Vista или старше.

Для получения дополнительной информации обратитесь к WinSCP FAQ:
Why are the changes, I upload to webserver, not visible in the web browser?

+0

Это почти наверняка правильный ответ. Интересно, что можно сделать, чтобы обойти это. – user1167442

+0

Это дало мне то, что мне было нужно, но любой, кто хочет увидеть решение, смотрите ниже. – user1167442

1

Хорошо. С помощью Мартина, которого я сейчас понимаю, является разработчиком WinScp, я решил это. Я работал с плагином gulp.wait и вставлял паузу перед окончательной перезагрузкой - и он не работал.

Потому что ... Это было не там, где проблема была. Проблема возникала во время загрузки; в том, что файл скоро «коснулся» (или было что-то с отметкой времени, которая закончилась тем, что вызвала функциональную равновероятность).

Так что я переехал процесс ожидания как раз перед тем меньше процесс был назван так:

gulp.src(src) 
.pipe(plumber({ 
    errorHandler:onError 
}) 
.pipe(wait(500)) 
.pipe(less()) 
//etc 

Я буду экспериментировать, 500мс, вероятно, больше, чем needed..but не слишком долго, чтобы быть болезненным. Это решило проблему мгновенно.

Thanks Martin!