Skip to content

ng build --prod エラーの解決方法:Angular 14以降で非推奨になった引数の代替手段

問題の概要

Angularプロジェクトで本番環境用のビルドを実行しようとすると、以下のエラーが発生します:

ng build --prod --aot
Error: Unknown argument: prod

このエラーは、ng serve やパラメータなしの ng build は正常に動作するにもかかわらず発生します。

根本原因

この問題の根本的な原因は、Angular CLIのバージョン14以降で --prod フラグが完全に廃止されたことにあります。

廃止の背景

Angularチームはバージョン12で --prod フラグを非推奨とし、バージョン14で完全に削除しました。 この変更は、より明確で一貫性のある設定システムを提供するために行われました。

解決方法

標準的な解決策

現在の推奨される方法は、--configuration production フラグを使用することです:

bash
ng build --configuration production --aot

より簡潔なバージョンとして -c エイリアスも利用できます:

bash
ng build -c production --aot

Angular 15以降の注意点

Angular 15以降では、ng build コマンド自体がデフォルトでプロダクション設定を使用するようになりました。 ただし、明示的に指定することでコードの意図が明確になります。

package.json での設定

よくビルドコマンドを使用する場合は、package.json の scripts セクションに追加すると便利です:

json
{
  "scripts": {
    "build-prod": "ng build --configuration production --aot",
    "build-dev": "ng build --configuration development"
  }
}

これにより、npm run build-prod で簡単に実行できます。

Azure DevOps パイプラインでの対応

.NET プロジェクト内の Angular ソリューションをデプロイする場合、.csproj ファイルを更新する必要があります:

更新前(古い形式):

xml
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build -- --prod" />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build:ssr -- --prod" 
      Condition=" '$(BuildServerSideRenderer)' == 'true' " />

更新後(新しい形式):

xml
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build -- --configuration production" />
<Exec WorkingDirectory="$(SpaRoot)" Command="npm run build:ssr -- --configuration production" 
      Condition=" '$(BuildServerSideRenderer)' == 'true' " />

設定の詳細

Angularのビルド設定は angular.json ファイルで管理されています。 設定例:

json
"configurations": {
  "production": {
    "budgets": [
      {
        "type": "initial",
        "maximumWarning": "500kb",
        "maximumError": "1mb"
      }
    ],
    "outputHashing": "all",
    "sourceMap": false,
    "optimization": true
  },
  "development": {
    "buildOptimizer": false,
    "optimization": false,
    "sourceMap": true
  }
}

まとめ

--prod フラグは Angular 14 で完全に削除されたため、以下のいずれかの方法で対応してください:

  1. ng build --configuration production(推奨)
  2. ng build -c production(短縮版)
  3. package.json にスクリプトとして定義

この変更は、Angular CLIの設定システムをより明確で柔軟なものにするための改善の一環です。

互換性の問題

古いプロジェクトを最新のAngularバージョンにアップデートする場合は、すべてのビルドスクリプトとCI/CDパイプラインを確認して更新してください。