css - 如何在不破坏所有内容的情况下 stub Sprockets 4 中的 Assets ?

我有几个不同的样式表,它们应该是相互排斥的,我们称它们为 light.css.scss 和 dark.css.scss。到目前为止,我的 Assets 管道包括:

在 app/assets/stylesheets 文件夹中创建文件:

application.css
light.css.scss
dark.css.scss

将它们包含在我的 initializers/assets.rb 中:

Rails.application.config.assets.precompile += %w( light.css.scss )
Rails.application.config.assets.precompile += %w( dark.css.scss )

在我的 application.css 文件中删除它们:

/*
 *= require_self
 *= require_tree .
 *= stub dark.css.scss
 *= stub light.css.scss
 */

然后在需要时手动要求它们:

<% if subdomain == "light" %>
  <%= stylesheet_link_tag "light" %>
<% else %>
  <%= stylesheet_link_tag "dark" %>
<% end %>

效果很好,但后来我将我的 Sprockets gem 升级到 4.0,一切都坏了。事实证明我需要一个 assets/config/manifest.js 文件,但实际上我能在该文件上找到的唯一信息是 this ,那家伙说他也找不到任何信息,而且他的应用程序在空白应用程序上运行良好。使用空白文件时,我会收到如下错误:

#<ActionView::Template::Error: Asset `favicons/dark.png` was not declared to be precompiled in production.

暗示 list 文件负责预编译所有 Assets 。但是当我将样板代码输入其中时:

#manifest.js
//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css

我明白了:

#<ActionView::Template::Error: couldn't find file 'dark.css.scss' with type 'text/css'

无论我做什么,我都会收到各种类似的未找到文件错误。当我从我的 application.css 取消 stub 样式表文件时,我没有收到错误,但随后所有样式混合在一起,这是一个设计噩梦。我收集到 application.css 正在“隐藏”文件,然后 manifest.js 在找不到它们时感到困惑,但我不知道该怎么做。我尝试从 application.css 取消 stub 并在 manifest.js 中 stub ,但这也不起作用。真正奇怪的是我找不到任何关于 manifest.js 文件应该如何工作的信息。

有谁知道我怎样才能保留我的样式表文件而不破坏我的整个管道?

最佳答案

答案实际上很简单,问题出在我的 application.css 中的 require_tree . 上。我只是删除了其中的所有内容,并在 manifest.js 中使用 .css 而不是 .css.scss 一个一个地添加了我的样式表,如下所示:

//= link dark.css
//= link light.css

然后像以前一样根据需要包含文件。现在它们都已预编译但不会相互干扰。

关于css - 如何在不破坏所有内容的情况下 stub Sprockets 4 中的 Assets ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60271732/

相关文章:

azure-devops - 在 Azure Devops 中编写 EF6 迁移脚本

java - 如何将不同大小的元素立即放在彼此之上?

python - 如何在 TensorFlow 2 中保存/加载模型的一部分?

ruby - RSpec Mock - 类未实现实例方法 : jql. 也许您打算改用 `class

node.js - 谷歌 API + Passport + react : Authenticati

django - 使用 DjangoFilterConnectionField 时有没有办法删除边和

css - 使用 attr() 更新 CSS 变量

pytorch - 在 Pytorch tensorboard 中绘制几张图

javascript - Vue.js 清除用户缓存

php - 无服务器框架,处理程序不存在