我有一个带有大量 vendor CSS 和 JS 的 Rails 6 应用程序。 CSS 和 JS 很少会改变。我希望 Rails 缓存它。
我创建了 2 个包。 1 包含来自 vendor 的所有导入,另一个包含我的应用程序 JS 的导入。我用 javascript_packs_with_chunks_tag
在两者的头部。
每当我修改应用程序的 JS 文件时,该包的缓存也会与 vendor 的包一起失效!
这种行为似乎很正常,因为我能够使用新的 Rails 应用程序重现它。
编辑:我可以通过关闭编译 (webpacker.yml compile: false
) 并在单独的终端选项卡 ( ./bin/webpack --watch --colors --progress
) 中运行 webpack 来解决新 Rails 应用程序中的问题,但在我的应用程序中我仍然遇到问题。似乎 Webpack 找到了一些全局变量或关键字来连接这两个包。不幸的是,Webpack 日志和依赖关系图并未显示该“连接”。 100% 不是 import
.
最佳答案
我发现的一个简单解决方案是将 vendor CSS 和 JS 移动到 sprockets 而不是 webpack。我不喜欢这个解决方案,但它有效。
为此,请使用 sprocket 类型的 include 语句
<%= javascript_include_tag 'vendor' %>
<%= stylesheet_link_tag 'vendor' %>
并将您的 vendor js 和 CSS 放在各自的 app/assets
中文件夹
关于ruby-on-rails - 如何缓存 Rails webpack 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62492970/