Establecer el host y el puerto predeterminados para ng serve en el archivo de configuración


166

Quiero saber si puedo configurar un host y un puerto en un archivo de configuración para no tener que escribir

ng serve --host foo.bar --port 80

en lugar de solo

ng serve

Respuestas:


233

CLI angular 6+

En la última versión de Angular, esto se configura en el angular.jsonarchivo de configuración . Ejemplo:

{
    "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
    "projects": {
        "my-project": {
            "architect": {
                "serve": {
                    "options": {
                        "port": 4444
                    }
                }
            }
        }
    }
}

También puede usarng config para ver / editar valores:

ng config projects["my-project"].architect["serve"].options {port:4444}

CLI angular <6

En versiones anteriores, esto se configurabaangular-cli.json debajo del defaultselemento:

{
  "defaults": {
    "serve": {
      "port": 4444,
      "host": "10.1.2.3"
    }
  }
}

77
Para facilitar las cosas, puede especificar en 0.0.0.0lugar de la IP del host para escuchar en todos los dispositivos Ethernet. De esta manera, se pueden usar tanto el host local como la dirección IP pública.
dman el

VS2017 parece ignorar la configuración del puerto por alguna extraña razón, pero usé este truco con la adición de @dman (0.0.0.0 como host) para al menos habilitar conexiones remotas.
Ola Berntsson

44
Parece que las cosas han cambiado en las versiones recientes de la CLI (estoy usando la versión 6). Ver aquí para más detalles .
Nathan Friend

¿Hay alguna manera de hacer que este entorno de configuración sea específico?
Pankaj

71

A partir de ahora esa característica no es compatible, sin embargo, si esto es algo que le molesta, una alternativa estaría en su paquete.json ...

"scripts": {
  "start": "ng serve --host foo.bar --port 80"
}

De esta manera puedes simplemente correr npm start

Otra opción si desea hacer esto en múltiples proyectos es crear un alias, que potencialmente puede nombrar y ngserveque ejecutará el comando anterior.


lo siento, foo.bar, ¿refieres para qué? ACTUALIZACIÓN: lo eliminé y funciona, pero no lo sé.
Muhammed Moussa


29

Esto cambió en la última CLI angular.

El nombre del archivo cambió a angular.json, y la estructura también cambió.

Esto es lo que debes hacer:

"projects": {
    "project-name": {
        ...
        "architect": {
            "serve": {
                "options": {
                  "host": "foo.bar",
                  "port": 80
                }
            }
        }
        ...
    }
}

1
Trabajó para mí con @ angular / cli versión 6.1.5
PHEDev

1
Me funcionó con @ angular / cli versión 7.0.6
Kerry Jones

16

Otra opción es ejecutar el ng servecomando con la --portopción ej.

ng serve --port 5050 (es decir, para el puerto 5050)

Alternativamente, el comando: ng serve --port 0asignará automáticamente un puerto disponible para su uso.


El --port 0 bit fue buena información, pero no estoy seguro de que responda la pregunta.
Ceniza

Me gustó la opción --port 0 que asignó automáticamente el puerto disponible para usar ...
vinsinraw

La pregunta específicamente pregunta cómo configurarlo en un archivo de configuración
Ojonugwa Jude Ochalifu

11

Tenemos dos formas de cambiar el número de puerto predeterminado en Angular.

La primera forma es por comando CLI:

ng serve --port 2400 --open

La segunda forma es por configuración en la ubicación:

ProjectName\node_modules\@angular-devkit\build-angular\src\dev-server\schema.json.

Realice cambios en el archivo schema.json.

{
 "title": "Dev Server Target",
  "description": "Dev Server target options for Build Facade.",
  "type": "object",
  "properties": {
    "browserTarget": {
      "type": "string",
      "description": "Target to serve."
    },
    "port": {
      "type": "number",
      "description": "Port to listen on.",
      "default": 2400
    },

44
No desea anular o cambiar los archivos de origen. angular.json es la forma correcta de anular los valores predeterminados del esquema, como se menciona en la respuesta aceptada.
Bjørn Lindner

6

Puede guardarlos en un archivo, pero tiene que ponerlo .ember-cli(al menos por el momento); ver https://github.com/angular/angular-cli/issues/1156#issuecomment-227412924

{
"port": 4201,
"liveReload": true,
"host": "dev.domain.org",
"live-reload-port": 49153
}

editar: ahora puede configurarlos en angular-cli.json a partir de la confirmación https://github.com/angular/angular-cli/commit/da255b0808dcbe2f9da62086baec98dacc4b7ec9 , que se encuentra en la compilación 1.0.0-beta.30


5

Si planea ejecutar el proyecto angular en un host / IP y puerto personalizados, no es necesario realizar cambios en el archivo de configuración

El siguiente comando me funcionó

ng serve --host aaa.bbb.ccc.ddd --port xxxx

Dónde,

aaa.bbb.ccc.ddd --> IP you want to run the project
xxx --> Port you want to run the project

Ejemplo

ng serve --host 192.168.322.144 --port 6300

El resultado para mí fue

ingrese la descripción de la imagen aquí


3

Si está en Windows, puede hacerlo de esta manera:

  1. En el directorio raíz de su proyecto, cree el archivo run.bat
  2. Agregue su comando con su elección de configuraciones en este archivo. Por ejemplo

ng serve --host 192.168.1.2 --open

  1. Ahora puede hacer clic y abrir este archivo cuando quiera servir.

Esta no es la forma estándar, pero es cómoda de usar (lo que siento).


0

esto es lo que puse en package.json (ejecutando angular 6):

{
  "name": "local-weather-app",
  "version": "1.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve --port 5000",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },

Luego, un inicio npm simple atraerá el contenido de inicio. También podría agregar otras opciones a los contenidos



0

Si desea que su dirección IP local esté abierta específicamente al ejecutar ng serve, puede hacer lo siguiente:

npm install internal-ip-cli --save
ng serve --open --host $(./node_modules/.bin/internal-ip --ipv4)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.