Respuestas:
Actualización para @ angular / cli @ 9.x: y más
En angular.json
puede especificar un puerto por "proyecto"
"projects": {
"my-cool-project": {
... rest of project config omitted
"architect": {
"serve": {
"options": {
"port": 1337
}
}
}
}
}
Todas las opciones disponibles:
https://angular.io/guide/workspace-config#project-tool-configuration-options
Alternativamente, puede especificar el puerto cada vez que ejecute ng serve así:
ng serve --port 1337
Con este enfoque, puede poner esto en un script en su package.json para que sea más fácil ejecutarlo cada vez / compartir la configuración con otros miembros de su equipo:
"scripts": {
"start": "ng serve --port 1337"
}
Legado:
Actualización para @ angular / cli final:
Dentro angular-cli.json
puede especificar el puerto en los valores predeterminados:
"defaults": {
"serve": {
"port": 1337
}
}
Legacy-er:
Probado en angular-cli@1.0.0-beta.22-1
El servidor angular-cli
viene del ember-cli
proyecto. Para configurar el servidor, cree un .ember-cli
archivo en la raíz del proyecto. Agregue su configuración JSON allí:
{
"port": 1337
}
Reinicie el servidor y servirá en ese puerto.
Hay más opciones especificadas aquí: http://ember-cli.com/#runtime-configuration
{
"skipGit" : true,
"port" : 999,
"host" : "0.1.0.1",
"liveReload" : true,
"environment" : "mock-development",
"checkForUpdates" : false
}
En Angular 2 cli@2.3.1,
Para ejecutar un nuevo proyecto en un puerto diferente, una forma es especificar el puerto mientras ejecuta el comando ng serve.
ng serve --port 4201
o de la otra manera, puede editar su parte de scripts de archivo package.json y adjuntar el puerto a su variable de inicio como mencioné a continuación y luego simplemente ejecutar "npm start"
"scripts": {
"ng": "ng",
"start": "ng serve --port 4201",
... : ...,
... : ....
}
de esta manera es mucho mejor donde no necesita definir el puerto explícitamente cada vez.
Use scripts npm en su lugar ... Edite su package.json y agregue el comando a la sección de scripts.
{
"name": "my new project",
"version": "0.0.0",
"license": "MIT",
"angular-cli": {},
"scripts": {
"ng": "ng",
"start": "ng serve --host 0.0.0.0 --port 8080",
"lint": "tslint \"src/**/*.ts\" --project src/tsconfig.json --type-check && tslint \"e2e/**/*.ts\" --project e2e/tsconfig.json --type-check",
"test": "ng test",
"pree2e": "webdriver-manager update --standalone false --gecko false",
"e2e": "protractor"
},
"private": true,
"dependencies": {
"@angular/common": "^2.3.1",
"@angular/compiler": "^2.3.1",
"@angular/core": "^2.3.1",
"@angular/forms": "^2.3.1",
"@angular/http": "^2.3.1",
"@angular/platform-browser": "^2.3.1",
"@angular/platform-browser-dynamic": "^2.3.1",
"@angular/router": "^3.3.1",
"core-js": "^2.4.1",
"rxjs": "^5.0.1",
"ts-helpers": "^1.1.1",
"zone.js": "^0.7.2"
},
"devDependencies": {
"@angular/compiler-cli": "^2.3.1",
"@types/jasmine": "2.5.38",
"@types/node": "^6.0.42",
"angular-cli": "1.0.0-beta.26",
"codelyzer": "~2.0.0-beta.1",
"jasmine-core": "2.5.2",
"jasmine-spec-reporter": "2.5.0",
"karma": "1.2.0",
"karma-chrome-launcher": "^2.0.0",
"karma-cli": "^1.0.1",
"karma-jasmine": "^1.0.2",
"karma-remap-istanbul": "^0.2.1",
"protractor": "~4.0.13",
"ts-node": "1.2.1",
"tslint": "^4.3.0",
"typescript": "~2.0.3"
}
}
Entonces solo ejecuta npm start
Ahora puede especificar el puerto en .angular-cli.json bajo los valores predeterminados:
"defaults": {
"styleExt": "scss",
"serve": {
"port": 8080
},
"component": {}
}
Probado en angular-cli v1.0.6
El archivo de configuración del proyecto angular.json
puede manejar múltiples proyectos (espacios de trabajo) que se pueden servir individualmente.
ng config projects.my-test-project.targets.serve.options.port 4201
Donde la my-test-project
parte es el nombre del proyecto que configuró con el ng new
comando como aquí:
$ ng new my-test-project
$ cd my-test-project
$ ng config projects.my-test-project.targets.serve.options.port 4201
$ ng serve
** Angular Live Development Server is listening on localhost:4201, open your browser on http://localhost:4201/ **
Legado:
Usualmente uso el ng set
comando para cambiar la configuración de CLI angular para el nivel de proyecto.
ng set defaults.serve.port=4201
Los cambios cambian su .angular.cli.json y agrega la configuración del puerto como se mencionó anteriormente .
Después de este cambio, puede usarlo simplemente ng serve
y usará el puerto preferido sin la necesidad de especificarlo cada vez.
En cuanto a Angular CLI: 7.1.4 , hay dos formas comunes de lograr cambiar el puerto predeterminado .
En el angular.json
, agregue la --port
opción de serve
parte y use ng serve
para iniciar el servidor.
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "demos:build",
"port": 1337
},
"configurations": {
"production": {
"browserTarget": "demos:build:production"
}
}
},
En el package.json
, agregue la --port
opción ay ng serve
use npm start
para iniciar el servidor.
"scripts": {
"ng": "ng",
"start": "ng serve --port 8000",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
La respuesta proporcionada por elwyn es correcta. Pero también debe actualizar la configuración del transportador para e2e.
En angular.json,
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"port": 9000,
"browserTarget": "app:build"
}
}
En e2e / protractor.conf.js
exports.config = {
allScriptsTimeout: 11000,
specs: [
'./src/**/*.e2e-spec.ts'
],
capabilities: {
'browserName': 'chrome'
},
directConnect: true,
baseUrl: 'http://localhost:9000/'
}
Puede haber una situación en la que desee utilizar la variable de entorno NodeJS para especificar el puerto del servidor de desarrollo de CLI angular. Una de las posibles soluciones es mover el servidor de desarrollo CLI que se ejecuta en un script NodeJS separado, que leerá el valor del puerto (por ejemplo, del archivo .env) y lo usará ejecutándose ng serve
con el port
parámetro:
// run-env.js
const dotenv = require('dotenv');
const child_process = require('child_process');
const config = dotenv.config()
const DEV_SERVER_PORT = process.env.DEV_SERVER_PORT || 4200;
const child = child_process.exec(`ng serve --port=${DEV_SERVER_PORT}`);
child.stdout.on('data', data => console.log(data.toString()));
Luego puede a) ejecutar este script directamente a través de node run-env
, b) ejecutarlo a través de npm actualizando package.json, por ejemplo
"scripts": {
"start": "node run-env"
}
run-env.js
debería comprometerse con el repositorio, .env
no debería. Se pueden encontrar más detalles sobre el enfoque en esta publicación: Cómo cambiar el puerto del servidor de desarrollo de CLI angular a través de .env .