- Angular
Angular CLIコマンド一覧|ng new・ng generate早見表
Angular CLIとは、Angularアプリの作成・開発サーバー起動・ビルド・テスト・コード生成を ng コマンドひとつで行う公式のコマンドラインツールです。 npm install -g @angular/cli で入れ、ng new でプロジェクトを作り、ng serve で動かし、ng generate で部品を足し、ng build で配布用ファイルを作る、という流れが基本です。
この記事では、Angular CLI 22.2.1 で ng new から ng build までを順番に実行し、対話プロンプトの選択肢・生成されるファイル・ビルド出力(チャンクサイズ表)をそのまま載せています。ng generate はすべてのスキーマティック(ひな形の種類)を --dry-run で実行して、短縮形と生成ファイル名を早見表にしました。--prod のように以前使われていたオプションが今どうなっているかの新旧対応表と、ng: command not found などのエラー文と対処もまとめています。
確認環境: Linux(x64)/Node.js 24.21.0/npm 10.9.7/Angular CLI 22.2.1・Angular 22.2.1/TypeScript 6.0.3/Vitest 5.0.3。出力中のパスは /home/taro/ に置き換えています。
Angular CLIコマンドの早見表
ng --help が表示するコマンドを、使う順に並べ替えた一覧です(説明は 22.2.1 のヘルプをもとにしています)。
| やりたいこと | コマンド | 短縮形 | よく使う例 |
|---|---|---|---|
| CLI を入れる | npm install -g @angular/cli |
― | npm install -g @angular/cli@22 |
| バージョンを確認する | ng version |
ng v |
ng version |
| 新しいプロジェクトを作る | ng new [name] |
ng n |
ng new shop-app --style=css --ssr=false |
| 開発サーバーを起動する | ng serve [project] |
ng s / ng dev |
ng serve --port 4300 --open |
| 配布用にビルドする | ng build [project] |
ng b |
ng build --configuration development |
| 部品のひな形を作る | ng generate |
ng g |
ng g c product-list |
| 単体テストを実行する | ng test [project] |
ng t |
ng test --watch=false |
| ライブラリを追加して設定する | ng add <collection> |
― | ng add @angular/material |
| Angular 本体や依存を更新する | ng update [packages..] |
― | ng update @angular/core @angular/cli |
| angular.json の値を読む・書く | ng config [json-path] [value] |
― | ng config projects.shop-app.prefix |
| ビルドキャッシュを管理する | ng cache |
― | ng cache info / ng cache clean |
| 任意のターゲットを実行する | ng run <target> |
― | ng run shop-app:build:development |
| リンターを実行する | ng lint [project] |
― | 先に ng add angular-eslint が必要 |
| E2E テストを実行する | ng e2e [project] |
ng e |
先に E2E 用パッケージの ng add が必要 |
| デプロイ用ビルダーを呼ぶ | ng deploy [project] |
― | 先にデプロイ用パッケージの ng add が必要 |
| 翻訳用メッセージを抽出する | ng extract-i18n [project] |
― | ng extract-i18n |
| 利用状況の送信を設定する | ng analytics |
― | ng analytics disable |
| シェルの入力補完を設定する | ng completion |
― | ng completion |
毎日使うのは ng serve・ng generate・ng test・ng build の4つです。残りは「プロジェクトを作るとき」「ライブラリを足すとき」「バージョンを上げるとき」に使います。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Angular CLIコマンド一覧|ng new・ng generate早見表」
Angular CLIをインストールする
インストールとバージョン確認
公式ドキュメント(Installation)に載っているインストールコマンドは次の1行です。
npm install -g @angular/cli
実行すると次のように表示されました。
added 95 packages in 14s
38 packages are looking for funding
run `npm fund` for details
入ったかどうかは ng version で確かめます。プロジェクトのフォルダーの中で実行すると、Angular 本体や TypeScript の版まで一覧できます(表は主な行の抜粋です)。
Angular CLI : 22.2.1
Angular : 22.2.1
Node.js : 24.21.0
Package Manager : npm 10.9.7
Operating System : linux x64
┌───────────────────────────┬───────────────────┬───────────────────┐
│ Package │ Installed Version │ Requested Version │
├───────────────────────────┼───────────────────┼───────────────────┤
│ @angular/build │ 22.2.1 │ ^22.2.1 │
│ @angular/cli │ 22.2.1 │ ^22.2.1 │
│ @angular/core │ 22.2.1 │ ^22.2.0 │
│ rxjs │ 7.8.2 │ ~7.8.0 │
│ typescript │ 6.0.3 │ ~6.0.2 │
│ vitest │ 5.0.3 │ ^5.0.0 │
└───────────────────────────┴───────────────────┴───────────────────┘
Node.jsのバージョン要件
Angular CLI は Node.js の版を起動時に確認します。 Node.js 22.22.2 で CLI 22.2.1 を動かしたところ、次のメッセージが出て止まりました。
Node.js version v22.22.2 detected.
The Angular CLI requires a minimum Node.js version of v22.22.3 or v24.15.0 or v26.0.0.
Please update your Node.js version or visit https://nodejs.org/ for additional instructions.
Node.js を 24.21.0 にすると、そのまま動きました。公式ドキュメントの Version compatibility には、次の対応が載っています。
| Angular | Node.js | TypeScript |
|---|---|---|
| 22.0.x | ^22.22.3 || ^24.15.0 || ^26.0.0 | 6.0.0 以上 6.1.0 未満 |
| 21.x | ^20.19.0 || ^22.12.0 || ^24.0.0 | 5.9.0 以上 6.0.0 未満 |
| 20.x | ^20.19.0 || ^22.12.0 || ^24.0.0 | 5.8.0 以上 6.0.0 未満 |
最新の CLI が動かないときは、まず node -v を確認するのが近道です。Node.js を上げにくいときは、npm install -g @angular/cli@21 のようにメジャー番号を指定して、手元の Node.js に合う CLI を入れる方法もあります。
ng newでプロジェクトを作る
対話プロンプトの選択肢
ng new shop-app を実行すると、3つの質問が順に表示されました。Enter だけで進めると、いちばん上(または既定)の選択肢になります。
? Which stylesheet system would you like to use?
> CSS [ https://developer.mozilla.org/docs/Web/CSS ]
Tailwind CSS [ https://tailwindcss.com ]
Sass (SCSS) [ https://sass-lang.com/documentation/syntax#scss ]
Sass (Indented) [ https://sass-lang.com/documentation/syntax#the-indented-syntax ]
Less [ http://lesscss.org ]
? Do you want to enable Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering)? (y/N)
? Which AI tools should Angular integrate with? https://angular.dev/ai/develop-with-ai
>(*) None
( ) Claude Code [ `CLAUDE.md` + Angular MCP server config ]
( ) Cursor [ `AGENTS.md` + Angular MCP server config ]
( ) Gemini CLI [ `GEMINI.md` + Angular MCP server config ]
( ) Open AI Codex [ `AGENTS.md` + Angular MCP server config ]
( ) VSCode [ `AGENTS.md` + Angular MCP server config ]
| 質問 | 意味 | 対応するオプション |
|---|---|---|
| Which stylesheet system | スタイルの書き方(CSS / Tailwind CSS / SCSS / Sass / Less) | --style=css など |
| enable SSR and SSG | サーバー側での描画・事前生成を入れるか | --ssr / --ssr=false |
| Which AI tools | AI ツール向けの設定ファイルを作るか | --ai-config=none など |
質問を飛ばしたいときは、オプションで答えを先に渡します。 すべて既定値でよければ --defaults が使えます。
ng new shop-app --style=css --ssr=false --ai-config=none
生成されるファイル
CSS・SSR なし・AI 設定なしで作ると、22個のファイルが作られ、続けて npm パッケージが入りました。
CREATE shop-app/.prettierrc (161 bytes)
CREATE shop-app/README.md (1460 bytes)
CREATE shop-app/.editorconfig (314 bytes)
CREATE shop-app/.gitignore (622 bytes)
CREATE shop-app/angular.json (1909 bytes)
CREATE shop-app/package.json (783 bytes)
CREATE shop-app/tsconfig.json (908 bytes)
CREATE shop-app/tsconfig.app.json (398 bytes)
CREATE shop-app/tsconfig.spec.json (409 bytes)
CREATE shop-app/.vscode/extensions.json (130 bytes)
CREATE shop-app/.vscode/launch.json (470 bytes)
CREATE shop-app/.vscode/tasks.json (978 bytes)
CREATE shop-app/src/main.ts (222 bytes)
CREATE shop-app/src/index.html (293 bytes)
CREATE shop-app/src/styles.css (80 bytes)
CREATE shop-app/src/app/app.css (0 bytes)
CREATE shop-app/src/app/app.spec.ts (682 bytes)
CREATE shop-app/src/app/app.ts (291 bytes)
CREATE shop-app/src/app/app.html (20144 bytes)
CREATE shop-app/src/app/app.config.ts (312 bytes)
CREATE shop-app/src/app/app.routes.ts (77 bytes)
CREATE shop-app/public/favicon.ico (15086 bytes)
√ Packages installed successfully.
ツリーにすると次の形です。
shop-app/
├── angular.json … ワークスペースの設定(ビルド・serve・test の定義)
├── package.json … 依存パッケージと npm スクリプト
├── tsconfig.json … TypeScript の共通設定
├── tsconfig.app.json … アプリ用
├── tsconfig.spec.json … テスト用
├── public/
│ └── favicon.ico … そのまま配信される静的ファイル
└── src/
├── index.html … ページの土台
├── main.ts … 起動処理(bootstrapApplication)
├── styles.css … 全体に効くスタイル
└── app/
├── app.ts … ルートコンポーネント
├── app.html … そのテンプレート
├── app.css … そのスタイル
├── app.spec.ts … そのテスト
├── app.config.ts … アプリ全体の設定(providers)
└── app.routes.ts … ルーティングの定義
生成された src/app/app.ts は次のとおりです。ファイル名は app.component.ts ではなく app.ts、クラス名は App で、standalone の指定も NgModule もありません。
import { Component, signal } from '@angular/core';
import { RouterOutlet } from '@angular/router';
@Component({
imports: [RouterOutlet],
selector: 'app-root',
styleUrl: './app.css',
templateUrl: './app.html',
})
export class App {
protected readonly title = signal('shop-app');
}
package.json の scripts には、次の5つが入っていました。
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"watch": "ng build --watch --configuration development",
"test": "ng test"
}
ng newの主なオプション
ng new --help に出てくるオプションのうち、よく使うものです。
| オプション | 短縮形 | 既定値 | 働き |
|---|---|---|---|
--style |
― | 対話で選ぶ | css / scss / sass / less / tailwind |
--ssr |
― | 対話で選ぶ | SSR と SSG の設定を入れる |
--routing |
― | ― | ルーティングの設定を入れる |
--skip-tests |
-S |
false | spec.ts を作らない |
--skip-git |
-g |
false | Git リポジトリを初期化しない |
--skip-install |
― | false | パッケージのインストールを後回しにする |
--inline-template |
-t |
― | テンプレートを app.ts の中に書く |
--inline-style |
-s |
― | スタイルを app.ts の中に書く |
--prefix |
-p |
app |
セレクターの接頭辞 |
--package-manager |
― | ― | npm / pnpm / yarn / bun |
--test-runner |
― | vitest |
vitest / karma |
--standalone |
― | true | false にすると NgModule 形式で作る |
--strict |
― | true | 厳しめの型チェックとサイズ予算 |
--zoneless |
― | ― | zone.js を使わない構成にする |
--file-name-style-guide |
― | 2025 |
2016 にすると app.component.ts 形式 |
--dry-run |
-d |
false | 何が作られるかだけ表示する |
--defaults |
― | false | 既定値のある質問を飛ばす |
--ssr --style=scss を --dry-run で試すと、src/styles.scss・src/app/app.scss と、サーバー用の src/server.ts・src/main.server.ts・src/app/app.config.server.ts・src/app/app.routes.server.ts が追加されることを確認できました。迷ったら --dry-run を付けて、作られるファイルを先に見ると安心です。
ng serveで開発サーバーを起動する
プロジェクトのフォルダーで ng serve を実行すると、ビルドのあとに URL が表示されます。ポートを 8730 に変えて起動した出力です。
ng serve --port 8730
❯ Building...
✔ Building...
Initial chunk files | Names | Raw size
main.js | main | 47.94 kB |
styles.css | styles | 95 bytes |
| Initial total | 48.03 kB
Application bundle generation complete. [2.541 seconds] - 2026-10-03T10:23:47.098Z
Watch mode enabled. Watching for file changes...
NOTE: Raw file sizes do not reflect development server per-request transformations.
➜ Local: http://localhost:8730/
この状態で curl を使ってアクセスすると、ステータス 200 で index.html が返りました。返ってきた HTML には /@vite/client の読み込みが差し込まれていて、開発サーバーは Vite の仕組みで動いていることがわかります。
止めるときは、ターミナルで Ctrl + C を押します。
| オプション | 短縮形 | 既定値 | 働き |
|---|---|---|---|
--port |
― | 4200 | 待ち受けるポート番号 |
--host |
― | localhost |
待ち受けるホスト(同じネットワークの端末から見るなら 0.0.0.0) |
--open |
-o |
false | 起動後に既定のブラウザーで開く |
--configuration |
-c |
development | production の設定で起動することもできる |
--proxy-config |
― | ― | バックエンドへ転送する設定ファイル |
--ssl |
― | false | HTTPS で配信する |
--hmr |
― | ― | 画面を保ったままの差し替え(スタイルが対象) |
--live-reload |
― | true | 変更時にページを再読み込みする |
--poll |
― | ― | ファイル監視をポーリング方式にする(ミリ秒) |
--watch |
― | true | 変更のたびに再ビルドする |
ng buildで配布用ファイルを作る
ビルド出力とチャンクサイズ表
ng build は、オプションなしで production 設定(最適化あり)のビルドになります。ng new 直後のプロジェクトでの出力です。
❯ Building...
✔ Building...
Initial chunk files | Names | Raw size | Estimated transfer size
main-NDN6ABXX.js | main | 216.46 kB | 59.45 kB
styles-5INURTSO.css | styles | 0 bytes | 0 bytes
| Initial total | 216.46 kB | 59.45 kB
Application bundle generation complete. [7.342 seconds] - 2026-10-03T10:19:01.978Z
Output location: /home/taro/shop-app/dist/shop-app
| 列 | 意味 |
|---|---|
| Initial chunk files | 最初の表示で読み込まれるファイル。名前の英数字はキャッシュ対策のハッシュ |
| Names | チャンクの名前(main がアプリ本体、styles が全体のスタイル) |
| Raw size | 圧縮前の大きさ |
| Estimated transfer size | 圧縮して転送したときの見積もり |
出力先の中身は次のとおりでした。配信するのは dist/shop-app/browser/ の中身です。
dist/shop-app/3rdpartylicenses.txt
dist/shop-app/browser/favicon.ico
dist/shop-app/browser/index.html
dist/shop-app/browser/main-NDN6ABXX.js
dist/shop-app/browser/styles-5INURTSO.css
development設定との違い
--configuration development を付けると、最適化なし・ソースマップありのビルドになります。同じプロジェクト(コンポーネントをいくつか足したあと)での出力です。
ng build --configuration development
Initial chunk files | Names | Raw size
main.js | main | 1.39 MB |
styles.css | styles | 95 bytes |
| Initial total | 1.39 MB
| 項目 | production(既定) | development |
|---|---|---|
| main のサイズ | 216.46 kB | 1.39 MB |
| ファイル名のハッシュ | あり(outputHashing: all) |
なし |
| 最適化(圧縮・不要コードの除去) | あり | なし(optimization: false) |
| ソースマップ | なし | あり(sourceMap: true) |
| サイズ予算のチェック | 初期 500kB で警告・1MB でエラー | なし |
この違いは、angular.json の build.configurations(production と development)に書かれています。
ng buildの主なオプション
| オプション | 短縮形 | 既定値 | 働き |
|---|---|---|---|
--configuration |
-c |
production | 使う設定の名前(development など) |
--output-path |
― | dist/プロジェクト名 |
出力先 |
--base-href |
― | ― | サブディレクトリーで配信するときの基準 URL |
--source-map |
― | 設定による | ソースマップを出力する |
--optimization |
― | 設定による | 最適化の有無 |
--output-hashing |
― | none(production 設定では all) |
ファイル名にハッシュを付ける範囲 |
--watch |
― | false | 変更のたびにビルドし直す |
--stats-json |
― | false | サイズ分析用の stats.json を出力する |
--delete-output-path |
― | true | ビルド前に出力先を空にする |
--ssr / --prerender |
― | ― | SSR・事前生成を有効にする |
ng generateでコードのひな形を作る
スキーマティックの早見表
ng generate(短縮形 ng g)に続けて種類と名前を書きます。22.2.1 の ng generate --help に出るスキーマティックをすべて --dry-run で実行し、生成されるファイル名を確かめました。
| 作るもの | コマンド | 短縮形 | 生成されるファイル(名前が product などの場合) |
|---|---|---|---|
| コンポーネント | ng g component product-list |
ng g c |
product-list/product-list.ts・.html・.css・.spec.ts |
| サービス | ng g service product |
ng g s |
product.ts・product.spec.ts |
| ディレクティブ | ng g directive highlight |
ng g d |
highlight.ts・highlight.spec.ts |
| パイプ | ng g pipe price |
ng g p |
price-pipe.ts・price-pipe.spec.ts |
| ガード | ng g guard auth |
ng g g |
auth-guard.ts・auth-guard.spec.ts |
| インターセプター | ng g interceptor logging |
― | logging-interceptor.ts・logging-interceptor.spec.ts |
| リゾルバー | ng g resolver product |
ng g r |
product-resolver.ts・product-resolver.spec.ts |
| クラス | ng g class models/product |
ng g cl |
models/product.ts・models/product.spec.ts |
| インターフェース | ng g interface models/item |
ng g i |
models/item.ts |
| 列挙型 | ng g enum models/status |
ng g e |
models/status.ts |
| NgModule | ng g module shared |
ng g m |
shared/shared-module.ts |
| 環境別の設定 | ng g environments |
― | src/environments/environment.ts・environment.development.ts(angular.json も更新) |
| 設定ファイル | ng g config browserslist |
― | .browserslistrc |
| Web Worker | ng g web-worker heavy |
― | heavy.worker.ts・tsconfig.worker.json(angular.json も更新) |
| ライブラリ | ng g library ui-kit |
ng g lib |
projects/ui-kit/ 以下に9ファイル(angular.json・package.json・tsconfig.json も更新) |
| アプリを追加 | ng g application admin |
ng g app |
projects/admin/ 以下に12ファイル |
| Service Worker | ng g service-worker |
― | オフライン対応の設定を追加 |
| App Shell | ng g app-shell |
― | ビルド時に外枠を生成する設定を追加 |
| AI 向け設定 | ng g ai-config |
― | AGENTS.md などと MCP サーバーの設定を作成 |
ファイル名に .component や .service が付かないのが、現在の既定(2025 年版スタイルガイド)です。パイプ・ガード・インターセプター・リゾルバーは price-pipe.ts のようにハイフンで種類が付きます。
--dry-runで作られるファイルを先に見る
--dry-run(短縮形 -d)を付けると、ファイルを書き込まずに結果だけ表示します。
ng g component product-list --dry-run
CREATE src/app/product-list/product-list.css (0 bytes)
CREATE src/app/product-list/product-list.spec.ts (568 bytes)
CREATE src/app/product-list/product-list.ts (208 bytes)
CREATE src/app/product-list/product-list.html (27 bytes)
NOTE: The "--dry-run" option means no changes were made.
設定ファイルを書き換えるスキーマティックでは、UPDATE の行も出ます。
ng g environments --dry-run
CREATE src/environments/environment.ts (31 bytes)
CREATE src/environments/environment.development.ts (31 bytes)
UPDATE angular.json (2134 bytes)
NOTE: The "--dry-run" option means no changes were made.
生成されるコード
--dry-run を外して実行し、中身を確認しました。
コンポーネント(ng g c product-list)
import { Component } from '@angular/core';
@Component({
imports: [],
selector: 'app-product-list',
styleUrl: './product-list.css',
templateUrl: './product-list.html',
})
export class ProductList {}
サービス(ng g s product)。22.2.1 では @Service() デコレーターで生成されました。--injectable を付けると @Injectable で生成する、とヘルプに書かれています。
import { Service } from '@angular/core';
@Service()
export class Product {}
ディレクティブ(ng g d highlight)
import { Directive } from '@angular/core';
@Directive({
selector: '[appHighlight]',
})
export class Highlight {}
パイプ(ng g p price)
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'price',
})
export class PricePipe implements PipeTransform {
transform(value: unknown, ...args: unknown[]): unknown {
return null;
}
}
ガード(ng g g auth)と インターセプター(ng g interceptor logging)は、クラスではなく関数で生成されます。
import { CanActivateFn } from '@angular/router';
export const authGuard: CanActivateFn = (route, state) => {
return true;
};
import { HttpInterceptorFn } from '@angular/common/http';
export const loggingInterceptor: HttpInterceptorFn = (req, next) => {
return next(req);
};
ng generate componentの主なオプション
| オプション | 短縮形 | 既定値 | 働き |
|---|---|---|---|
--inline-template |
-t |
false | HTML ファイルを作らず template に書く |
--inline-style |
-s |
false | CSS ファイルを作らず styles に書く |
--skip-tests |
― | false | spec.ts を作らない |
--flat |
― | false | フォルダーを作らずに置く |
--style |
― | css |
css / scss / sass / less / none |
--change-detection |
-c |
OnPush |
Eager を選ぶと changeDetection が明記される |
--display-block |
-b |
false | スタイルに :host { display: block; } を入れる |
--view-encapsulation |
-v |
― | Emulated / None / ShadowDom |
--prefix |
-p |
― | セレクターの接頭辞を変える |
--selector |
― | ― | セレクターを直接指定する |
--type |
― | ― | ファイル名に種類を足す(例:component) |
--standalone |
― | true | false にすると NgModule に宣言する形式 |
--project |
― | ― | 複数プロジェクトのとき対象を指定する |
オプションを組み合わせた結果です。
ng g c ui/badge -t -s --skip-tests --dry-run
CREATE src/app/ui/badge/badge.ts (192 bytes)
ng g c ui/card --flat --type=component --dry-run
CREATE src/app/ui/card.component.css (0 bytes)
CREATE src/app/ui/card.component.spec.ts (582 bytes)
CREATE src/app/ui/card.component.ts (206 bytes)
CREATE src/app/ui/card.component.html (19 bytes)
以前の product.service.ts や auth.guard.ts の形でそろえたいときは、次のオプションで生成できました。
ng g s data/order --type=service --dry-run
ng g g admin --type-separator=. --dry-run
CREATE src/app/data/order.service.spec.ts (351 bytes)
CREATE src/app/data/order.service.ts (83 bytes)
CREATE src/app/admin.guard.spec.ts (464 bytes)
CREATE src/app/admin.guard.ts (129 bytes)
ng testで単体テストを実行する
ng new の既定では、テストランナーは Vitest です。コンポーネント・サービス・ディレクティブ・パイプ・ガード・インターセプターを1つずつ生成したあとに実行しました。--watch=false を付けると、1回実行して終了します。
ng test --watch=false
❯ Building...
✔ Building...
Application bundle generation complete. [6.150 seconds] - 2026-10-03T10:22:30.347Z
RUN v5.0.3 /home/taro/shop-app
Test Files 7 passed (7)
Tests 8 passed (8)
Start at 19:22:31
Duration 3.35s (environment 54%, setup 18%, transform 10%, tests 9%, import 8%)
| オプション | 働き |
|---|---|
--watch |
変更のたびに再実行する(端末から実行すると既定で有効) |
--include / --exclude |
対象にする・外すファイルを glob で指定する |
--filter |
テスト名を正規表現で絞り込む |
--coverage |
カバレッジを計測する |
--browsers |
ブラウザーで実行する(指定しなければ Node.js 上の jsdom) |
--ui |
Vitest の UI を開く |
--list-tests |
見つかったテストファイルを一覧して終了する |
--runner |
vitest(既定)か karma |
ng addとng updateでライブラリを管理する
ng add
ng add は、パッケージのインストールに加えて、設定ファイルの書き換えまで行います。@angular/material を追加したときの出力です(--skip-confirmation で確認の質問を、--defaults でテーマなどの質問を省いています)。
ng add @angular/material --skip-confirmation --defaults
❯ Determining Package Manager
› Using package manager: npm
✔ Determining Package Manager
❯ Searching for compatible package version
› Found compatible package version: 22.2.1.
✔ Searching for compatible package version
❯ Loading package information
✔ Loading package information
❯ Installing package
✔ Installing package
UPDATE package.json (850 bytes)
√ Packages installed successfully.
CREATE src/material-theme.scss (1179 bytes)
UPDATE angular.json (1950 bytes)
UPDATE src/index.html (637 bytes)
手元の Angular と合うバージョンを自動で選び、テーマファイルの作成・angular.json への登録・index.html へのフォント読み込みの追加までが一度に行われました。
ng update
引数なしの ng update は、更新できるパッケージを調べるだけで、何も書き換えません。最新の状態では次の表示になりました。
Using package manager: npm
Collecting installed dependencies...
Found 15 dependencies.
We analyzed your package.json and everything seems to be in order. Good work!
実際に上げるときは、パッケージ名を並べます。メジャーバージョンは1つずつ上げるのが基本で、手順は Angular Update Guide(update.angular.dev)で元と先のバージョンを選ぶと表示されます。
ng update @angular/core@22 @angular/cli@22
ng config・ng cache・ng runで設定とキャッシュを扱う
ng config は angular.json の値をパスで読み書きします。
ng config projects.shop-app.prefix
app
ng cache info はビルドキャッシュの状態を表示します。ビルド結果がおかしいと感じたら ng cache clean で消せます。
Enabled : Yes
Environment : local
Path : /home/taro/shop-app/.angular/cache
Size on disk : 739.21 kB
Effective Status : Enabled (current machine)
ng run は「プロジェクト名:ターゲット名:設定名」を指定して実行します。ng build --configuration development は、次のコマンドと同じ意味です。
ng run shop-app:build:development
以前のオプションとの新旧対応表
検索で見つかる記事には、以前のバージョン向けの書き方も多く残っています。22.2.1 で実行して確かめた対応です。
| 以前の書き方 | 22.2.1 での結果 | 今の書き方 |
|---|---|---|
ng build --prod |
Error: Unknown argument: prod |
ng build(既定が production 設定) |
ng serve --prod |
Error: Unknown argument: prod |
ng serve --configuration production |
ng lint(追加設定なし) |
Cannot find "lint" target for the specified project. |
ng add angular-eslint のあとに ng lint |
ng e2e(追加設定なし) |
Cannot find "e2e" target for the specified project. |
E2E 用パッケージを ng add してから ng e2e |
ng g c foo で foo.component.ts |
foo.ts(クラス名は Foo) |
以前の名前にするなら --type=component |
ng g s foo で foo.service.ts |
foo.ts(@Service()) |
--type=service、@Injectable にするなら --injectable |
ng g g foo で foo.guard.ts(クラス) |
foo-guard.ts(関数) |
--type-separator=.、クラスにするなら --functional=false |
ng g c foo --standalone |
指定しなくても standalone | NgModule 形式にするなら --standalone=false(NgModule のないプロジェクトでは Could not find an NgModule. と表示) |
ng new で app.module.ts が作られる |
app.config.ts と app.routes.ts が作られる |
NgModule 形式にするなら ng new --standalone=false(app-module.ts と app-routing-module.ts が作られる) |
ng test で Karma が起動 |
Vitest が起動 | Karma を使うなら --test-runner=karma |
| コンポーネントの変更検知は指定なし | --change-detection の既定が OnPush |
以前の動きにするなら -c Eager |
ng lint と ng e2e を追加設定なしで実行したときの出力は次のとおりで、候補のパッケージ名まで案内してくれます。
Cannot find "lint" target for the specified project.
You can add a package that implements these capabilities.
For example:
ESLint: ng add angular-eslint
Cannot find "e2e" target for the specified project.
You can add a package that implements these capabilities.
For example:
Playwright: ng add playwright-ng-schematics
Cypress: ng add @cypress/schematic
Nightwatch: ng add @nightwatch/schematics
WebdriverIO: ng add @wdio/schematics
Puppeteer: ng add @puppeteer/ng-schematics
エラーメッセージと対処
実際に出したエラー文と、その直し方です。
| エラー文 | 起きる場面 | 対処 |
|---|---|---|
bash: ng: command not found / zsh: command not found: ng |
CLI が入っていない、または PATH が通っていない | npm install -g @angular/cli を実行。入れてあるなら npx ng ... で呼ぶか、npm config get prefix の bin を PATH に加える |
The Angular CLI requires a minimum Node.js version of ... |
Node.js が要件より前の版 | Node.js を上げる。または CLI のメジャー番号を指定して入れる |
Error: This command is not available when running the Angular CLI outside a workspace. |
angular.json のないフォルダーで ng serve・ng build・ng generate を実行 |
プロジェクトのフォルダーへ cd してから実行する |
Error: Unknown argument: prod |
--prod を付けた |
--prod を外す(ng build は既定で production) |
Error: Unknown argument: foo |
ng g componen foo のように種類名を打ち間違えた |
ng g --help で種類名を確認する |
A merge conflicted on path "/src/app/product-list/product-list.spec.ts". |
同じ名前で2回 ng g c を実行した |
別の名前にする。作り直すなら既存のフォルダーを削除してから実行する(--force を付けても同じメッセージでした) |
Configuration 'staging' for target 'build' in project 'shop-app' is not set in the workspace. |
angular.json にない設定名を --configuration に指定 |
configurations に設定を追加するか、名前を確認する |
Cannot find "lint" target for the specified project. |
リンターを入れていない | ng add angular-eslint |
Data path "" must have required property 'name'. |
入力を受け付けない環境で ng new を名前なしで実行 |
ng new shop-app のように名前を付ける |
Windows の PowerShell でスクリプトの実行が止められる場合について、公式ドキュメント(Installation)は次のコマンドを案内しています。表示されるメッセージをよく読んで進めるよう書かれています。
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
同じページには、Linux や macOS でグローバルのインストール先が root の所有になっている場合は sudo を付けて実行する、とも書かれています。
「どのコマンドにどんなオプションがあるか」を忘れたら、--help が確実です。 この記事の表も、ng new --help・ng serve --help・ng build --help・ng generate component --help の出力から作りました。
ng --help
ng generate --help
ng generate component --help
作業の流れで見るコマンド
最後に、プロジェクトを作ってから配布するまでを1本につなげます。上から順にコピーして実行できます。
# 1. CLI を入れる(最初の1回だけ)
npm install -g @angular/cli
ng version
# 2. プロジェクトを作る
ng new shop-app --style=css --ssr=false --ai-config=none
cd shop-app
# 3. 開発サーバーを起動する(http://localhost:4200/)
ng serve --open
# 4. 部品を足す(別のターミナルで)
ng g c product-list
ng g s product
ng g p price
ng g g auth
# 5. テストする
ng test --watch=false
# 6. 配布用にビルドする(dist/shop-app/browser/ を配信)
ng build
よくある質問
Q. ng serve と ng build は何が違いますか?
A. ng serve は開発用で、ファイルを変更するたびに再ビルドしてブラウザーに反映します。ng build は配布用のファイルを dist/ に書き出します。今回の出力では、production ビルドの main が 216.46 kB(転送見積もり 59.45 kB)、最適化なしの development ビルドの main.js が 1.39 MB でした。
Q. ng generate で作ったファイルを取り消すコマンドはありますか?
A. 22.2.1 の ng --help には、取り消し用のコマンドは載っていません。作られたファイルを削除すれば元に戻ります。心配なときは、先に --dry-run で作られるファイルを確認してから実行すると安心です。
Q. app.component.ts という名前で作りたいのですが。
A. プロジェクト全体なら ng new --file-name-style-guide=2016、コンポーネント単位なら ng g c foo --type=component で、以前と同じ形式のファイル名になります。
Q. --dry-run はどのコマンドで使えますか?
A. ng new と ng generate で使えることを確認しました。どちらも CREATE・UPDATE の一覧のあとに NOTE: The "--dry-run" option means no changes were made. と表示され、ファイルは書き込まれません。
まとめ
- 基本の流れは
ng new→ng serve→ng generate→ng test→ng buildです。 ng newは3つの質問(スタイル・SSR・AI ツール設定)に答えるだけ。--styleなどのオプションで先に答えを渡せます。ng buildは既定で production 設定。--prodは受け付けないので、付けずに実行します。ng generateは短縮形が便利(ng g c・ng g s・ng g d・ng g p・ng g g)。--dry-runで先に結果を確認できます。- ファイル名は
product-list.ts・product.tsのように短い形が既定。以前の形にするなら--typeや--type-separatorを使います。 ng lintとng e2eは、対応するパッケージをng addしてから使います。- 動かないときは
node -vとng version、オプションを忘れたら--helpを見ます。
参考・出典
- Angular 公式ドキュメント「CLI Overview and Command Reference」(angular.dev/cli)
- Angular 公式ドキュメント「Installation」(angular.dev/tools/cli/setup-local)
- Angular 公式ドキュメント「Version compatibility」(angular.dev/reference/versions)
- Angular CLI 22.2.1 の
ng --help・ng new --help・ng serve --help・ng build --help・ng test --help・ng generate --helpの出力
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Angular CLIコマンド一覧|ng new・ng generate早見表」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。