gpt4 book ai didi

ruby-on-rails - Heroku Repo Size 和 Slug Size 会随着每次部署而增加。为什么?

转载 作者:数据小太阳 更新时间:2023-10-29 08:08:10 24 4
gpt4 key购买 nike

我更改了我的应用程序中的一些文本并部署了新版本

git push heroku master

但每次我推,它都会增加很多。我在这里写下每次部署后的增长。

168.2 KB
37.9 MB

178.6 KB
38.7 MB

187 KB
39.4 MB

194 KB
40.2 MB

205.3 KB
40.9 MB

232.8 KB
41.8 MB

277.9 KB
42.4 MB

286.5 KB
43 MB

如果我选择我的应用程序项目中的所有文件夹(包括我使用 slugignore 和 gitignore 忽略的 public/、tmp/和 log/),总大小仅为 198 KB。

为什么会这样?

最佳答案

可以遵循几个步骤来减小 slug 的大小。

清除构建缓存

Buildpacks 缓存一些内容以加速 future 的构建。但有时,当您的依赖项发生变化时(尤其是当您删除依赖项时),它可能不会从缓存中删除。因此,如果您面临意外的大 slug 大小并且您已从项目中删除了一些依赖项,请先尝试此操作(如果您可以忍受下一次部署时缓慢的构建)。

$ heroku plugins:install heroku-repo 
$ heroku repo:purge_cache -a appname

忽略带有 .slugignore 的文件

您的 .sligignore 应该列出存储库中的目录和文件(不会被 .gitignore 忽略)但应用程序在产品上运行不需要这些目录和文件。此类文件的一些示例是测试、文档和设计文件。要从 slug 中删除这些,请在项目的根目录中创建一个 .slugignore。

*.psd
/doc
/test

要检查哪些文件被放入 slug,您也可以输入 herokubash 并检查文件系统。

heroku run bash -a appname  
du -sh .[^.]* * | sort -hr

节点模块

这部分特定于包含将所有 JavaScript 代码捆绑到单个脚本的 Assets 管道的应用。如果您使用的是节点服务器,这可能不适用于您。

如果您将 Rails 与 webpacker 一起使用,您可能在 node_modules 中有很多依赖项。但是在 Assets 管道编译资源之后,您可能不需要 node_modules 目录(除非您在运行时运行使用这些模块的自定义节点脚本)。在这种情况下要删除 node_modules 目录,我们可以使用带有 .slug-post-clean 文件的 heroku-buildpack-post-build-clean buildpack。此文件的格式与 .gitignore 或 .sligignore 相同,因此只需从最后的 slug 中列出您想要忽略的目录,它们将被删除。使用 buildpack 需要确保的一件事是,这应该是顺序中的最后一个,否则它将在您的实际 buildpack 运行之前删除文件。

但是如果您使用在运行时访问 node_modules 的自定义节点脚本怎么办?在那种情况下,我们所做的是将这些脚本移动到一个单独的目录,它有自己的 package.json 文件。要将依赖项与根 package.json 的安装一起安装到该目录中,请将安装后脚本添加到根 package.json。这将指示 yarn 将目录更改为您的自定义脚本,并在安装根项目的依赖项后在那里安装依赖项。

"scripts": {
"postinstall": "yarn --cwd lib/custom-node-script"
}

有了这个,即使在生产 Rails 应用程序中使用自定义节点脚本,您也可以安全地删除根 node_modules 目录。

Here is the detailed post解决同样的问题。

关于ruby-on-rails - Heroku Repo Size 和 Slug Size 会随着每次部署而增加。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30167040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com