我正在使用“less-rails” gem 来减少与我的 rails 应用程序的集成。
在我的“applications.css.less”文件中,我将其他 LESS 文件导入其中。当我对任何导入的文件进行更改时,我需要重新保存“application.css.less”文件,以便它接受更改。
当其中一个导入的文件发生更改时,如何让“applications.css.less”文件自动重新编译?
我正在使用“less-rails” gem 来减少与我的 rails 应用程序的集成。
在我的“applications.css.less”文件中,我将其他 LESS 文件导入其中。当我对任何导入的文件进行更改时,我需要重新保存“application.css.less”文件,以便它接受更改。
当其中一个导入的文件发生更改时,如何让“applications.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>
我的其他较少文件没有通过资产管道。一旦我修复了这个问题并将它们导入到我的“application.css.less”文件中,“application.css.less”就会在其他文件发生变化时开始自动重新编译。