Перекомпилируйте родительский файл LESS в Rails 3.2
Я использую гем "less-rails", чтобы быть менее интегрированным в мое приложение rails.
В моем файле "application.css.less" я импортирую другие файлы LESS. Когда я делаю изменения в любом из импортированных файлов, мне нужно повторно сохранить файл "application.css.less", чтобы он мог принять изменения.
Как я могу автоматически перекомпилировать файл "application.css.less" при изменении одного из импортированных файлов?
3 ответа
Мои другие меньшие файлы не проходили через линию активов. Как только я исправил это и импортировал их в мой файл "application.css.less", "application.css.less" начал автоматически перекомпилироваться, когда другие файлы изменились.
Нашел решение, упомянутое здесь: https://github.com/metaskills/less-rails/issues/80
gem 'less-rails', github: 'dv/less-rails', branch: 'fix-import-dependencies'
не буду работать с livereload, так что я вернулся к cmd + r
Это старая проблема, и, к сожалению, нет способа сделать это обычным способом. Компилятор LESS просто смотрит измененные файлы. Таким образом, если вы используете файл с импортом, этот файл необходимо изменить и перекомпилировать.
В среде разработки (с использованием javascript) вы можете решить эту проблему, очистив кеш:
<link rel="stylesheet/less" type="text/css" href="/css/style.less"/>
<script src="/js/less-1.1.5.min.js" type="text/javascript"></script>
<script>
less = {env:'development'};
function destroyLessCache(pathToCss) { // e.g. '/css/' or '/stylesheets/'
if (!window.localStorage || !less || less.env !== 'development') {
return;
}
var host = window.location.host;
var protocol = window.location.protocol;
var keyPrefix = protocol + '//' + host + pathToCss;
for (var key in window.localStorage) {
if (key.indexOf(keyPrefix) === 0) {
delete window.localStorage[key];
}
}
}
window.onload=destroyLessCache('/css/');
</script>