钢轨利弊那里快速的问题...Rails的:使用livereload与资产管道
使用Rails 3.0.x的应用程序工作时我是民警卫队和LiveReload的重度使用者。但是,似乎在Rails 3.1中使用资产管道时,livereload guard并不知道对Sass文件所做的更改应触发向浏览器发送新的CSS。
是否有人在Asset Pipeline中使用LiveReload?如果是这样,你如何使它工作?
谢谢!
钢轨利弊那里快速的问题...Rails的:使用livereload与资产管道
使用Rails 3.0.x的应用程序工作时我是民警卫队和LiveReload的重度使用者。但是,似乎在Rails 3.1中使用资产管道时,livereload guard并不知道对Sass文件所做的更改应触发向浏览器发送新的CSS。
是否有人在Asset Pipeline中使用LiveReload?如果是这样,你如何使它工作?
谢谢!
在Github以下一些问题线程后,我发现下面的固定我的问题:
1)确保所有SCSS文件被命名为新的资产约定以下,像这样:filename.css.scss
我使用SCSS在Rails 3.1之前,并且刚刚命名了我所有的sass文件filename.scss
。
2)请使用您guardfile为livereload如下:
guard 'livereload' do
watch(%r{app/helpers/.+\.rb})
watch(%r{app/views/.+\.(erb|haml)})
watch(%r{(public/).+\.(css|js|html)})
watch(%r{app/assets/stylesheets/(.+\.css).*$}) { |m| "assets/#{m[1]}" }
watch(%r{app/assets/javascripts/(.+\.js).*$}) { |m| "assets/#{m[1]}" }
watch(%r{lib/assets/stylesheets/(.+\.css).*$}) { |m| "assets/#{m[1]}" }
watch(%r{lib/assets/javascripts/(.+\.js).*$}) { |m| "assets/#{m[1]}" }
watch(%r{vendor/assets/stylesheets/(.+\.css).*$}) { |m| "assets/#{m[1]}" }
watch(%r{vendor/assets/javascripts/(.+\.js).*$}) { |m| "assets/#{m[1]}" }
watch(%r{config/locales/.+\.yml})
end
我发现了以下工作得很好过:
guard :livereload do
watch(%r{^app/.+\.(erb|haml|js|css|scss|sass|coffee|eco|png|gif|jpg)})
watch(%r{^app/helpers/.+\.rb})
watch(%r{^public/.+\.html})
watch(%r{^config/locales/.+\.yml})
end
这不是时生成的默认代码你运行guard init livereload
由于某些原因,对sass进口不起作用。
是的,如果你正确地使用SASS,你不希望你的partials编译成css,所以你不能将它们命名为* .css.scss。 –
我发布了这个相关的问题澄清这一点:http://stackoverflow.com/questions/12334515/naming-imported-scss-files-scss-or-css-scss。因此,如果您的文件名为_file.scss,并且它在@import“file”中使用;那么这个livereload策略是正确的,这些文件不应该重命名为_file.css.scss。 – justingordon
是的!这比其他任何例子都更有帮助。我正在使用与SCSS包含系统相结合的资产管道。你的例子对我来说是“开箱即用”的。 – BradGreens
作为@mirko在他的评论中提到,scss文件中的额外.css已被弃用。因此,添加这不是一个很好的解决方案,我已经体验到,只需添加scss扩展即可强制页面重新加载。
所以我发现这工作:
watch(%r{(app|vendor)(/assets/\w+/(.+)\.(scss))}) { |m| "/assets/#{m[3]}.css" }`
我的理解是这样的映射SCSS文件编译的css文件。我希望它也适用于sass。
不错,我忘了lib文件夹。你会不会打扰供应商目录呢? – stephenmurdoch
当然,添加了供应商目录。 – Andrew
确保你的GemFile中有guard-livereload gem。 – FearMediocrity