NET Core и Angular 6 минимизируют процесс - PullRequest
0 голосов
/ 11 июня 2019

У меня есть базовое приложение NET с angular 6, и я пытаюсь минимизировать файлы сборки для производственной среды (vendor.js, main.js и т. Д.) Во время процесса публикации, но файлы никогда не создаютсяminified или что-то близкое, потому что они сохраняют все пробелы и комментарии.

У меня есть производственные конфигурации, заданные в angular.json, а также команды сборки в файле .csproj, но ничего не работает.Я пробовал использовать:

npm run build --prod
npm run build --target=production
npm run build --target=prod --environment=prod
npm run build --target=production --environment=production

угловой CLI: 6.1.5 / узел: 11.6.0 / ОС: win32 x64 / угловой: 6.1.10

angular.json

"configurations": {
   "production": {
      "fileReplacements": [
         {
            "replace": "src/environments/environment.ts",
            "with": "src/environments/environment.prod.ts"
         }
        ],
        "optimization": true,
        "outputHashing": "all",
        "sourceMap": false,
        "extractCss": true,
        "namedChunks": false,
        "aot": true,
        "extractLicenses": true,
        "vendorChunk": false,
        "buildOptimizer": true
     }
 }

csproj file

<Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
<!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
<Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build --prod" />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build:ssr --prod" Condition=" '$(BuildServerSideRenderer)' == 'true' " />

<!-- Include the newly-built files in the publish output -->
<ItemGroup>
  <DistFiles Include="$(SpaRoot)dist\**; $(SpaRoot)dist-server\**" />
  <DistFiles Include="$(SpaRoot)node_modules\**" Condition="'$(BuildServerSideRenderer)' == 'true'" />
  <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
    <RelativePath>%(DistFiles.Identity)</RelativePath>
    <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
  </ResolvedFileToPublish>
</ItemGroup>

1 Ответ

0 голосов
/ 11 июня 2019

Вы можете изменить свой скрипт сборки в вашем package.json как этот

  "build": "ng build --prod --aot --optimization --build-optimizer --vendor-chunk --common-chunk --extract-licenses --extract-css --source-map=false --delete-output-path  && gzip-all \"dist/*.*\"",

Что я делаю здесь, так это то, что я строю в режиме aot и включаю некоторую оптимизацию, чтобы уменьшить размер пакета

А также не забудьте установить «gzip-all»: «^ 1.0.0» для минимизации сценария с расширением gzip

Также вам нужно будет добавить этот конфиг в ваш csproj

<!-- Include the newly-built files in the publish output -->
<ItemGroup>
  <DistFiles Include="$(SpaRoot)dist\**" />
  <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
    <RelativePath>%(DistFiles.Identity)</RelativePath>
    <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
  </ResolvedFileToPublish>
</ItemGroup>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...