Angular CLI
Tạo, chạy, sinh mã, kiểm thử và cập nhật ứng dụng Angular bằng Angular CLI.
Mục tiêu của trang
Angular CLI là công cụ dòng lệnh chính thức để khởi tạo và vận hành workspace Angular. Trang này dùng các lệnh phổ biến của Angular hiện đại; hãy luôn xem --help của phiên bản CLI đang dùng trước khi áp dụng một tuỳ chọn ít gặp.
Mục lục
- Angular CLI là gì?
- Cài đặt và kiểm tra
- Tạo workspace mới
- Chạy ứng dụng khi phát triển
- Sinh mã bằng generate
- Build, kiểm thử và các lệnh vận hành
- Cấu hình workspace
- Quy trình làm việc đề xuất
- Những lưu ý quan trọng
- Bước tiếp theo
Angular CLI là gì?
Angular CLI (Command Line Interface) là bộ lệnh ng dùng để tạo và quản lý một workspace Angular. Workspace là thư mục gốc chứa mã nguồn, cấu hình build, các thư viện có thể tái sử dụng và một hoặc nhiều ứng dụng.
Thay vì tự ghép bundler, test runner và quy ước thư mục, CLI tạo sẵn cấu trúc nhất quán rồi chạy các target (tác vụ như build, serve, test) đã khai báo. Ví dụ, ng build không chỉ gọi một trình đóng gói: nó đọc cấu hình của project, biên dịch TypeScript, xử lý tài nguyên và ghi kết quả vào thư mục đầu ra.
Đừng học thuộc mọi cờ lệnh
Hãy nhớ nhóm lệnh và mục đích của chúng. Với một generator hoặc builder cụ thể, ng <lệnh> --help là nguồn chính xác nhất vì các lựa chọn có thể thay đổi giữa các bản Angular.
Cài đặt và kiểm tra
Dùng CLI toàn cục hoặc theo dự án
Cài CLI toàn cục thuận tiện khi bạn thường xuyên tạo project mới:
npm install -g @angular/cliSau khi vào một workspace, nên chạy ng từ thư mục đó. Hệ thống package manager sẽ ưu tiên bản CLI cục bộ mà dự án đã khai báo trong devDependencies, nhờ vậy cả nhóm dùng cùng công cụ.
Nếu chỉ muốn tạo một project mà không cài toàn cục, dùng npx với bản mới nhất:
npx @angular/cli@latest new cua-hangnpx tải và chạy gói cho lệnh hiện tại. Với dự án đang tồn tại, hãy ưu tiên CLI cục bộ của dự án thay vì ép dùng @latest; một CLI quá mới có thể không tương thích với phiên bản Angular trong mã nguồn.
Xem phiên bản và trợ giúp
Trong workspace đã cài dependencies, dùng CLI cục bộ qua npx --no-install để tránh tải nhầm bản mới. Phiên dưới đây mô tả thao tác và kết quả cần kiểm tra, không phải output đã chạy trên máy của bạn.
- Đối chiếu phiên bản
npx --no-install ng versionGhi chú
Kết quả kỳ vọng: Thấy Angular CLI, Angular và Node.js; đối chiếu Node với yêu cầu của phiên bản Angular trong workspace.
- Xem nhóm lệnh
npx --no-install ng helpGhi chú
Kết quả kỳ vọng: Danh sách lệnh của CLI cục bộ, không phải CLI toàn cục khác phiên bản.
- Kiểm tra generator
npx --no-install ng generate --helpGhi chú
Kết quả kỳ vọng: Có generator cần dùng trong collection đã cài.
- Kiểm tra tùy chọn component
npx --no-install ng generate component --helpGhi chú
Kết quả kỳ vọng: Đọc các cờ thực sự được phiên bản này hỗ trợ trước khi tạo tệp.
ng version hiển thị Angular, CLI, Node.js và các package liên quan. Khi gặp lỗi khó tái hiện, thông tin này cần có trong báo cáo lỗi. --help cho biết cú pháp và các cờ mà bản CLI hiện tại thực sự hỗ trợ.
Tạo workspace mới
Lệnh dưới đây tạo một ứng dụng có định tuyến và dùng SCSS cho stylesheet:
ng new cua-hang --routing --style=scssCLI có thể đặt thêm câu hỏi tương tác, chẳng hạn có tạo ứng dụng SSR hay không. SSR (server-side rendering) là việc render HTML trên máy chủ trước khi gửi tới trình duyệt; chỉ bật nó khi yêu cầu sản phẩm cần SEO, thời gian hiển thị ban đầu hoặc kiến trúc máy chủ phù hợp.
ng new cua-hang-ssr --routing --style=scss --ssrCác lựa chọn khi tạo dự án
| Nhu cầu | Lựa chọn | Ý nghĩa |
|---|---|---|
| Có điều hướng giữa các trang | --routing | Tạo cấu hình Angular Router ban đầu. |
| Dùng SCSS | --style=scss | Chọn phần mở rộng và bộ xử lý stylesheet mặc định. |
| Không tạo Git repository | --skip-git | Hữu ích khi thư mục đã nằm trong repository có sẵn. |
| Cần SSR ngay từ đầu | --ssr | Bổ sung cấu hình render phía máy chủ. |
| Xem mọi tuỳ chọn | ng new --help | Kiểm tra theo đúng phiên bản CLI đang dùng. |
Các project Angular mới mặc định dùng kiến trúc standalone, nghĩa là component có thể khai báo trực tiếp các dependency thay vì bắt buộc đặt trong NgModule. Không nên thêm NgModule chỉ vì hướng dẫn cũ dùng nó; hãy làm theo cấu trúc do workspace hiện tại tạo ra.
Quy trình tối thiểu
ng new cua-hang --routing --style=scss
cd cua-hang
ng serve --open--open yêu cầu CLI mở địa chỉ máy chủ phát triển trong trình duyệt. Khi lệnh đang chạy, sửa một template hoặc stylesheet rồi lưu tệp: CLI sẽ biên dịch lại và trình duyệt thường được cập nhật tự động.
Chạy ứng dụng khi phát triển
Trong thư mục workspace, chạy:
ng serveMáy chủ phát triển thường lắng nghe ở http://localhost:4200/. Có thể đổi cổng hoặc mở trình duyệt tự động:
ng serve --port 4300 --openng serve dành cho vòng lặp phát triển cục bộ. Nó ưu tiên phản hồi nhanh và theo dõi thay đổi, không phải là artefact để đưa thẳng lên môi trường production. Để tạo artefact triển khai, dùng ng build.
Khi không chạy được
- Đảm bảo terminal đang ở thư mục có
angular.json. - Chạy
npm installsau khi mới clone repository hoặc sau khi thay đổi lockfile. - Kiểm tra phiên bản Node.js và CLI bằng
ng version. - Đọc lỗi đầu tiên có ý nghĩa trong terminal; lỗi sau đó thường chỉ là hệ quả.
Không mở workspace từ thư mục con tuỳ ý
Các lệnh như ng serve, ng build và ng test cần tìm cấu hình workspace. Nếu CLI báo “This command is not available when running the Angular CLI outside a workspace”, hãy quay về thư mục gốc chứa angular.json.
Sinh mã bằng generate
ng generate tạo tệp theo generator của Angular và cập nhật những nơi cần thiết. Dạng viết tắt là ng g.
Ví dụ tạo component cho danh sách sản phẩm:
ng generate component features/products/product-list
# viết tắt: ng g c features/products/product-listVí dụ tạo service và interface:
ng generate service core/api/products --skip-tests
ng generate interface models/productGenerator giữ tên tệp, selector, test và quy ước thư mục nhất quán. Kết quả cụ thể phụ thuộc các mặc định trong angular.json và các cờ đã truyền. Chẳng hạn --skip-tests không tạo tệp test cho lần sinh mã đó; chỉ dùng khi nhóm đã thống nhất cách bù lại phạm vi kiểm thử.
Đọc lệnh được sinh trước khi dùng
Trước khi dùng generator ở một codebase lạ, kiểm tra các lựa chọn của nó:
ng generate component --help
ng generate service --helpMột số lựa chọn hữu ích thường có là tên đường dẫn, --skip-tests, kiểu stylesheet và chiến lược change detection. Ví dụ, --change-detection OnPush yêu cầu component dùng chiến lược kiểm tra thay đổi OnPush, giúp giới hạn thời điểm Angular kiểm tra lại view. Đây không phải cờ nên áp dụng đại trà: hãy theo quy ước hiệu năng và cách quản lý state của project.
Build, kiểm thử và các lệnh vận hành
Build theo cấu hình
ng build
ng build --configuration productionLệnh build đọc target build của project, tối ưu hoá theo cấu hình được chọn và ghi artefact vào outputPath trong angular.json (thường nằm dưới dist/). production là tên cấu hình phổ biến, nhưng không phải workspace nào cũng đặt giống vậy. Hãy xem angular.json trước khi gọi một cấu hình tuỳ biến như staging.
Trong development, có thể chọn cấu hình serve đã được khai báo:
ng serve --configuration developmentNếu workspace có nhiều project, chỉ rõ tên project để tránh chạy nhầm ứng dụng:
ng build cua-hang
ng serve cua-hangKiểm thử, lint và mở rộng
ng test
ng lint
ng add @angular/material
ng update @angular/core @angular/cling testchạy targettest. Các workspace mới của Angular hiện đại thường dùng Vitest, còn project cũ có thể vẫn dùng Karma hoặc cấu hình khác. Vì vậy, hãy xemangular.jsonvàpackage.jsonthay vì giả định test runner.ng lintchỉ hoạt động khi project có targetlint, thường do một công cụ như Angular ESLint cung cấp. Angular CLI không tự bảo đảm mọi workspace đều có lệnh lint.ng addcài một package có schematic rồi để package đó cấu hình tích hợp. Đọc các thay đổi được đề xuất trước khi chấp nhận.ng updatetìm và chạy migration do package cung cấp. Commit hoặc tạo nhánh trước khi cập nhật, sau đó chạy test và build.
Update không chỉ là đổi version
Migration có thể sửa mã nguồn và cấu hình để phù hợp với API mới. Hãy xem diff sau ng update, đặc biệt với ứng dụng có thư viện nội bộ hoặc cấu hình build riêng.
Cấu hình workspace
angular.json là nơi CLI biết workspace có những project nào và mỗi project có các target nào. Một target có thể có options dùng chung và các configurations cho từng môi trường.
Tên trường có thể khác giữa các phiên bản và workspace, nhưng ý tưởng không đổi: lệnh ng <target> <project> --configuration <tên> chọn một tác vụ và một tập tuỳ chọn đã khai báo. Tránh sửa trực tiếp cấu hình nếu chưa hiểu target nào đang tham chiếu nó; một thay đổi ở build có thể ảnh hưởng cả CI/CD và môi trường production.
Dùng ng config để đọc hoặc đặt một giá trị cấu hình của CLI khi cần:
ng config cli.analytics falseLệnh trên tắt telemetry của Angular CLI cho workspace hoặc phạm vi cấu hình mà CLI đang áp dụng. Với cấu hình quan trọng của ứng dụng, ưu tiên review thay đổi trong tệp cấu hình cùng với pull request thay vì thay đổi ngầm trên máy cá nhân.
Quy trình làm việc đề xuất
Một vòng lặp nhỏ, dễ kiểm soát cho một thay đổi giao diện có thể là:
- Chạy
ng servevà mở ứng dụng. - Tạo phần mã lặp lại bằng
ng generate, hoặc tạo thủ công khi thay đổi quá nhỏ. - Viết hoặc cập nhật test gần với thay đổi.
- Chạy
ng testvà kiểm tra lỗi trong trình duyệt. - Chạy
ng build --configuration productiontrước khi mở pull request hoặc để CI xác nhận.
CLI giúp chuẩn hoá thao tác, nhưng không thay thế review mã, kiểm thử nghiệp vụ hay kiểm tra accessibility. Một build thành công chỉ chứng minh ứng dụng có thể được biên dịch theo cấu hình đó.
Những lưu ý quan trọng
- Không dùng
--forcenhư cách sửa lỗi mặc định. Cờ này có thể bỏ qua kiểm tra an toàn của schematic hoặc ghi đè lựa chọn cần được xem xét. Hãy hiểu nguyên nhân xung đột trước. - Không đưa
dist/vào Git trừ khi quy trình triển khai yêu cầu. Đây là artefact sinh ra từ build, không phải nguồn mã chính. - Giữ lockfile trong commit.
package-lock.json,pnpm-lock.yamlhoặc lockfile tương ứng giúp CI cài đúng dependency đã được kiểm thử. - Chạy lệnh từ đúng workspace. Trong monorepo, luôn chỉ rõ project khi tên mặc định không rõ ràng.
- Kiểm tra tuỳ chọn theo phiên bản. Tài liệu trên mạng có thể nói về Angular cũ, nhất là với
NgModule, builder, Karma và cấu hình SSR.
Bước tiếp theo
Sau khi tạo được workspace và quen với các lệnh ng, hãy tìm hiểu cách bố trí các tệp mà CLI đã tạo và dùng công cụ hỗ trợ khi phát triển.