簡體   English   中英

從Angular中的生產環境中排除組件代碼

[英]Exclude components code from production environment in Angular

我想從Angular 5+中的生產版本中排除某些組件。 到目前為止,我已閱讀並了解環境變量的概念,但根據我的理解,這些概念在運行時可用。 我正在尋找的是實際排除某些模塊被導入,以便它們的代碼不會進入生產構建(文件)。

我也不希望有一個<div *ngIf="isProduction">...</div> ,我寧願做的事情是這樣的:

Component({ ... templateUrl: environment.production ? 'app.prod.html' : 'app.html' })

但是,由於Angular編譯器的工作原理,這也是不可能的。

我想這個問題的答案是調整angular-cli ,但鑒於沒有好的文檔(我能找到),我想知道是否有人有更好的想法?

對於那些尋找*不那么可擴展的*解決方案的人。

解決方案適用於Angular 5 / Angular 6+

您可以通過在angular.json文件中添加每個文件對,根據您正在構建/提供的環境來切換特定文件。

例如,如果您希望僅在使用生產環境/配置時在應用程序組件中使用app.prod.html而不是app.html。

angular.json中,在您希望替換的配置下的fileReplacements數組中添加替換:

{
  ...
  "projects": {
    ...
    "configurations": {
      "production": {
        ...
        "fileReplacements": [
          ...
          *** ADD YOUR REPLACEMENT FILES HERE ***
          ...
        ]
      }
    }
  }
}

使用上面的例子:

{
  ...
  "projects": {
    ...
    "configurations": {
      "production": {
        ...
        "fileReplacements": [
          ...
          {
            "replace": "src/app/app.html",
            "with": "src/app/app.prod.html"
          }
          ...
        ]
      }
    }
  }
}

不是一個漂亮的解決方案,因為它似乎你會為你想要替換的每個文件做這個,但它應該工作。


使用構建或提供特定配置

ng serve --configuration=production
ng build --configuration=production

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM