Heroku:如何减小 .NET Core/ Angular app slug 的大小?
Heroku: How to reduce a .NET Core/ Angular app slug size?
我收到关于我的 slug 尺寸太大的 Heroku 警告:
-----> Compressing...
Done: 304.9M
-----> Launching...
! Warning: Your slug size exceeds our soft limit (304 MB) which may affect boot time.
如何减小 slug 的大小?这是一个 .NET Core 2.1.401 和 Angular 6 应用程序,所以我使用以下构建包:
- dotnetcore-buildpack;
- heroku-nodejs
- heroku-buildpack-apt
运行 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
文件夹,所以我尝试在 [= 之后删除 node_modules/
文件夹21=] 在应用程序的 .csproj
中使用此条目,但它并没有减小 slug 的大小。
<Target Name="CleanupNodeModules" AfterTargets="Publish">
<Exec WorkingDirectory="$(SpaRoot)" Command="rm -rf node_modules" Condition=" '$(OS)' != 'Windows_NT' " ConsoleToMSBuild="true" />
</Target>
有什么想法吗?
我创建了一个 pull request 来将 .NET Core 项目构建为一个独立的 exe
,然后删除了 .NET Core SDK。
有了这个,我的 slug 大小从 304MB 变成了 149MB!
看起来node_modules
没有效果...
您可能希望使用 IL Linker 进一步减小 .NET Core 输出的大小。本质上,它将检查未使用的依赖项并删除那些 class 具有无法访问代码的库。我看到 macOS 和 Windows.
中独立的 .NET Core 控制台应用程序的大小减少了 30-50%
我收到关于我的 slug 尺寸太大的 Heroku 警告:
-----> Compressing...
Done: 304.9M
-----> Launching...
! Warning: Your slug size exceeds our soft limit (304 MB) which may affect boot time.
如何减小 slug 的大小?这是一个 .NET Core 2.1.401 和 Angular 6 应用程序,所以我使用以下构建包:
- dotnetcore-buildpack;
- heroku-nodejs
- heroku-buildpack-apt
运行 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
文件夹,所以我尝试在 [= 之后删除 node_modules/
文件夹21=] 在应用程序的 .csproj
中使用此条目,但它并没有减小 slug 的大小。
<Target Name="CleanupNodeModules" AfterTargets="Publish">
<Exec WorkingDirectory="$(SpaRoot)" Command="rm -rf node_modules" Condition=" '$(OS)' != 'Windows_NT' " ConsoleToMSBuild="true" />
</Target>
有什么想法吗?
我创建了一个 pull request 来将 .NET Core 项目构建为一个独立的 exe
,然后删除了 .NET Core SDK。
有了这个,我的 slug 大小从 304MB 变成了 149MB!
看起来node_modules
没有效果...
您可能希望使用 IL Linker 进一步减小 .NET Core 输出的大小。本质上,它将检查未使用的依赖项并删除那些 class 具有无法访问代码的库。我看到 macOS 和 Windows.
中独立的 .NET Core 控制台应用程序的大小减少了 30-50%