Heroku: Как уменьшить размер слагов приложений .NET Core / Angular? - PullRequest
0 голосов
/ 13 сентября 2018

Я получаю предупреждения Heroku о слишком большом размере пули:

-----> 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папка требуется для процесса сборки, поэтому я попытался удалить папку node_modules/ после dotnet publish, используя эту запись в .csproj приложения, но это не уменьшило размер слага.

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

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Возможно, вы захотите использовать IL Linker для дальнейшего уменьшения размера вывода .NET Core. По сути, он проверит наличие неиспользуемых зависимостей и удалит эти библиотеки классов с недоступным кодом. Размер автономного консольного приложения .NET Core в macOS и Windows уменьшился на 30-50%.

0 голосов
/ 13 сентября 2018

Я создал запрос , чтобы построить проект .NET Core как автономный exe и впоследствии удалить .NET Core SDK.

С этим я перешел с 304MB на 149MB размером слизня!

Похоже, node_modules не имеет никакого эффекта ...

...