生产服务器上的共享/公共/资产与源代码上的公共/资产上的预编译资产有什么区别?

时间:2017-04-21 12:18:20

标签: ruby-on-rails

我预先编译了我的资产,即CSS,javascript和字体文件,以减少文件大小。使用RAILS_ENV=production rake assets:precompile

我已在服务器上按以下路径压缩资源:

共享/公共/资产

但无论如何我继续在我的本地再次预编译它们,它们是在公共/资产文件夹中生成的。我注意到压缩文件与服务器 shared / public / assets 上的文件完全相同。但我团队中的测试人员正在测试一些在线工具。他们都说"你的java脚本文件需要缩小。"那么,这会"缩小"如果我将这些本地预编译资产推送到生产源代码,问题就解决了吗?

1 个答案:

答案 0 :(得分:3)

您不应该将本地预编译的资产推送到生产源代码,不。 您的构建过程应包括在部署期间预编译资产以进行生产。如果您正在使用Rails 5,那么默认情况下已经打开了。只要生产环境具有适当的环境变量(同样,默认情况下,环境变量'production'负责所有这些事情),资产将被预编译。

您说在运行rake资产之后压缩文件:precompile与服务器上的压缩文件完全相同。这意味着你的javascript应该具有并且应该被缩小和uglified(再次,Rails 5的默认值)。为了确认这种情况,在chrome,hard-reload(ctrl + shift + r)中打开dev工具并检查JS文件是否正在“网络”选项卡下加载。如果资产管道应该按原样使用,那么您应该只在这里看到缩小和uglified js文件。如果你打开它们,它们应该已经缩小并且变得丑化了。如果不是这种情况,则资产管道不会用于获取JS文件,或者您的构建过程已更改。
如果大多数这些JS文件都被缩小并且使用了 - 请检查那些不是。是否有一些库被添加到资产管道之外?这些文件是否缩小了?

如果您的所有JS文件实际上都已缩小,请告诉您的测试人员使用其他工具;)