【问题标题】:Heroku: How to reduce a .NET Core/ Angular app slug size?Heroku:如何减小 .NET Core/Angular 应用程序块的大小?
【发布时间】:2018-09-13 14:18:03
【问题描述】:

我收到 Heroku 警告,说我的 slug 太大了:

-----> Compressing...
   Done: 304.9M
-----> Launching...
 !     Warning: Your slug size exceeds our soft limit (304 MB) which may affect boot time.

如何减小蛞蝓大小?这是一个 .NET Core 2.1.401 和 Angular 6 应用程序,所以我使用以下构建包:

运行 heroku run "du . -h --max-depth=3 --threshold=1M" 会产生以下结果:

2.5M    ./App/obj
524M    ./App/ClientApp/node_modules
16M     ./App/ClientApp/dist
9.4M    ./App/ClientApp/src
549M    ./App/ClientApp
2.5M    ./App/bin/Release
3.3M    ./App/bin
556M    ./App
16M     ./heroku_output/ClientApp/dist
16M     ./heroku_output/ClientApp
130M    ./heroku_output
189M    ./.heroku/dotnet/sdk
140M    ./.heroku/dotnet/shared
329M    ./.heroku/dotnet
27M     ./.heroku/node/lib
3.0M    ./.heroku/node/include
34M     ./.heroku/node/bin
63M     ./.heroku/node
391M    ./.heroku
11M     ./.apt/usr/lib
3.3M    ./.apt/usr/include
15M     ./.apt/usr
15M     ./.apt
1.1G    .

批量为node_modules/ (524M)、./heroku/dotnet/ (329M) 和./heroku_output (130M)。

我认为我不能使用.slugignore 文件,因为构建过程需要node_modules 文件夹,所以我尝试在应用程序的@ 中使用此条目删除dotnet publish 之后的node_modules/ 文件夹987654334@,但它并没有减少 slug 的大小。

<Target Name="CleanupNodeModules" AfterTargets="Publish">
  <Exec WorkingDirectory="$(SpaRoot)" Command="rm -rf node_modules" Condition=" '$(OS)' != 'Windows_NT' " ConsoleToMSBuild="true" />
</Target>

有什么想法吗?

【问题讨论】:

    标签: heroku heroku-nodejs


    【解决方案1】:

    您可能希望使用 IL Linker 进一步减小 .NET Core 输出的大小。本质上,它将检查未使用的依赖项并删除那些代码无法访问的类库。我看到 macOS 和 Windows 中独立的 .NET Core 控制台应用程序的大小减少了 30-50%。

    【讨论】:

    • 谢谢,我也试试!
    • 此外,还有 ILCompiler,它为我提供了 5Mb 的原生映像,而标准的独立部署则为 60Mb。虽然它在 macOS 上对我不起作用(启动时应用程序崩溃)。不过可能对你有用...stackoverflow.com/questions/44835273/…
    【解决方案2】:

    我创建了一个 pull request 来将 .NET Core 项目构建为自包含的 exe,然后删除 .NET Core SDK。

    这样,我的 slug 大小从 304MB 变成了 149MB!

    看起来node_modules 没有效果...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      相关资源
      最近更新 更多