将sass-rails gem升级到5.0会给出弃用警告

我们升级到sass-rails版本5.0.0并获得此弃用警告:

DEPRECATION WARNING: Extra .css in SCSS file is unnecessary. Rename /Users/foo/Projects/foo/app/assets/stylesheets/foo.css.scss to /Users/foo/Projects/foo/app/assets/stylesheets/foo.scss. (called from _app_views_layouts_application_html_erb__1560597815210891605_70190441246060 at /Users/foo/Projects/foo/app/views/layouts/application.html.erb:13) 

有谁知道这是怎么回事? gem是否真的希望我重命名我的所有样式表资源:

 app/assets/stylesheets/foo.css.scss 

至:

 app/assets/stylesheets/foo.scss 

似乎与我一起反对多年的Rails惯例。 也许有办法抑制弃用警告?

是的,您需要将.css.scss重命名为.css.scss ,因为链轮4中不支持.css.scss

如果要禁止临时弃用,可以使用以下命令来config/initializer/deprecations.rb

 Rails.application.config.after_initialize do old_behaviour = ActiveSupport::Deprecation.behavior ActiveSupport::Deprecation.behavior = ->(message, callstack) { unless message.starts_with?('DEPRECATION WARNING: Extra .css in SCSS file is unnecessary.', 'DEPRECATION WARNING: Extra .css in SASS file is unnecessary.') old_behaviour.each { |behavior| behavior[message,callstack] } end } end 

或者你可以修补补丁,不要生成这样的消息:

 module DisableCssDeprecation def deprecate_extra_css_extension(engine) if engine && filename = engine.options[:filename] if filename.end_with?('.css.scss','.css.sass') engine else super end end end end module Sass ; module Rails ; class SassImporter prepend DisableCssDeprecation end ; end ; end 

这为我处理了它:

 #!/bin/sh for file in $(find ./app/assets/stylesheets/ -name "*.css.scss") do git mv $file `echo $file | sed s/\.css//` done 

这个命令帮我重命名了很多.css.sass文件:

 find ./app/assets/stylesheets -type f | sed 'p;s/\.css\.scss/.scss/' | xargs -n2 git mv