Installazione e Angular CLI
Prerequisiti
Prima di installare Angular, assicurati di avere Node.js e npm installati sul tuo sistema. Angular richiede una versione LTS attiva di Node.js.
# Verificare le versioni installate
node --version # Minimo v18.x
npm --version # Incluso con Node.js
Per installare Node.js, scaricalo dal sito ufficiale nodejs.org oppure utilizza un version manager come nvm (Node Version Manager):
# Con nvm (Linux/macOS)
nvm install --lts
nvm use --lts
# Verificare l'installazione
node -v
npm -v
Installare Angular CLI
Angular CLI (Command Line Interface) è lo strumento ufficiale per creare, sviluppare, testare e distribuire applicazioni Angular.
# Installazione globale
npm install -g @angular/cli
# Verificare l'installazione
ng version
L’output del comando ng version mostrerà la versione della CLI e le dipendenze principali:
Angular CLI: 18.x.x
Node: 20.x.x
Package Manager: npm 10.x.x
Aggiornare Angular CLI
# Aggiornare la CLI globale
npm install -g @angular/cli@latest
# Aggiornare un progetto esistente
ng update @angular/cli @angular/core
Creare un Nuovo Progetto con ng new
Il comando ng new crea un nuovo workspace Angular con la struttura completa del progetto.
# Creare un progetto con le opzioni di default
ng new mia-app
# Creare un progetto con opzioni specifiche
ng new mia-app --routing --style=scss --standalone
# Creare con prefix personalizzato per i selettori
ng new mia-app --prefix=mia
Opzioni principali di ng new
| Opzione | Descrizione | Default |
|---|---|---|
--routing |
Aggiunge il modulo di routing | false |
--style |
Preprocessore CSS (css, scss, sass, less) |
css |
--standalone |
Usa standalone components (no NgModules) | true (v17+) |
--prefix |
Prefisso per i selettori dei componenti | app |
--skip-tests |
Non generare file .spec.ts |
false |
--ssr |
Abilita Server-Side Rendering | false |
--dry-run |
Mostra i file che verrebbero creati senza crearli | false |
# Esempio completo con tutte le opzioni
ng new e-commerce \
--routing \
--style=scss \
--standalone \
--prefix=ec \
--ssr
ng serve - Server di Sviluppo
Il comando ng serve avvia un server di sviluppo locale con live reload.
# Avviare il server di sviluppo
ng serve
# Con opzioni personalizzate
ng serve --port 3000 --open
# Usare una configurazione specifica
ng serve --configuration=production
Opzioni di ng serve
# Aprire automaticamente il browser
ng serve --open # oppure -o
# Specificare la porta
ng serve --port 4201
# Abilitare il polling per il file watching (utile in Docker)
ng serve --poll 1000
# Usare SSL
ng serve --ssl --ssl-cert ./cert.pem --ssl-key ./key.pem
# Specificare l'host (per accesso da rete)
ng serve --host 0.0.0.0
ng generate - Generare Elementi
Il comando ng generate (abbreviato ng g) crea automaticamente file e codice boilerplate per componenti, servizi, moduli e altro.
Generare Componenti
# Generare un componente
ng generate component header
# oppure abbreviato
ng g c header
# Componente standalone (default in Angular 17+)
ng g c card --standalone
# Componente senza file di test
ng g c footer --skip-tests
# Componente con inline template e stili
ng g c badge --inline-template --inline-style
# Componente in una sottocartella
ng g c features/dashboard
# Componente flat (senza cartella dedicata)
ng g c shared/bottone --flat
Generare Servizi
# Generare un servizio
ng g service services/auth
# Servizio senza file di test
ng g service services/logger --skip-tests
Generare Altri Elementi
# Generare una direttiva
ng g directive directives/evidenzia
# Generare una pipe
ng g pipe pipes/tronca
# Generare un guard
ng g guard guards/auth
# Generare un interceptor
ng g interceptor interceptors/token
# Generare un'interfaccia
ng g interface models/utente
# Generare un enum
ng g enum models/ruolo
# Generare un modulo (approccio NgModule)
ng g module features/admin --routing
Dry Run
Usa --dry-run (o -d) per vedere cosa verrebbe generato senza creare file:
ng g c lista-prodotti --dry-run
# Output:
# CREATE src/app/lista-prodotti/lista-prodotti.component.ts
# CREATE src/app/lista-prodotti/lista-prodotti.component.html
# CREATE src/app/lista-prodotti/lista-prodotti.component.scss
# CREATE src/app/lista-prodotti/lista-prodotti.component.spec.ts
# NOTE: The "--dry-run" option means no changes were made.
Altri Comandi Utili della CLI
ng build
# Build di sviluppo
ng build
# Build di produzione
ng build --configuration=production
# Analizzare il bundle
ng build --stats-json
# poi usare webpack-bundle-analyzer
ng test e ng e2e
# Eseguire i test unitari
ng test
# Test con code coverage
ng test --code-coverage
# Test end-to-end
ng e2e
ng lint
# Aggiungere ESLint al progetto (prima volta)
ng add @angular-eslint/schematics
# Eseguire il linting
ng lint
# Con fix automatico
ng lint --fix
ng add
# Aggiungere Angular Material
ng add @angular/material
# Aggiungere PWA support
ng add @angular/pwa
# Aggiungere SSR
ng add @angular/ssr
Configurazione del Workspace: angular.json
Il file angular.json è il file di configurazione principale del workspace Angular. Contiene la configurazione per build, serve, test e tutte le operazioni della CLI.
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"mia-app": {
"projectType": "application",
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"options": {
"outputPath": "dist/mia-app",
"index": "src/index.html",
"browser": "src/main.ts",
"polyfills": ["zone.js"],
"tsConfig": "tsconfig.app.json",
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
"src/styles.scss"
],
"scripts": []
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kB",
"maximumError": "1MB"
}
],
"outputHashing": "all"
},
"development": {
"optimization": false,
"extractLicenses": false,
"sourceMap": true
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"buildTarget": "mia-app:build:production"
},
"development": {
"buildTarget": "mia-app:build:development"
}
},
"defaultConfiguration": "development"
}
}
}
}
}
Sezioni chiave di angular.json
- projects: contiene tutti i progetti del workspace
- architect.build.options: configurazione di build (assets, stili, script globali)
- architect.build.configurations: configurazioni per ambienti diversi
- budgets: limiti per la dimensione del bundle
Personalizzare i Budget
I budget aiutano a mantenere sotto controllo le dimensioni del bundle:
"budgets": [
{
"type": "initial",
"maximumWarning": "500kB",
"maximumError": "1MB"
},
{
"type": "anyComponentStyle",
"maximumWarning": "4kB",
"maximumError": "8kB"
}
]
File di Configurazione Correlati
tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"sourceMap": true,
"declaration": false,
"downlevelIteration": true,
"experimentalDecorators": true,
"moduleResolution": "node",
"importHelpers": true,
"target": "ES2022",
"module": "ES2022",
"useDefineForClassFields": false,
"lib": ["ES2022", "dom"]
}
}
Best Practices
- Mantieni la CLI sempre aggiornata con
ng update - Usa
--dry-runprima di generare elementi complessi - Configura
budgetsappropriati per monitorare le dimensioni del bundle - Utilizza ambienti separati (
development,staging,production) per gestire configurazioni diverse - Sfrutta
ng addper integrare librerie che supportano schematics Angular - Abilita
strictmode neltsconfig.jsonper una maggiore sicurezza del codice