Legen Sie den Standardhost und -port für ng serve in der Konfigurationsdatei fest

165

Ich möchte wissen, ob ich einen Host und einen Port in einer Konfigurationsdatei festlegen kann, damit ich nicht eingeben muss

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

statt nur

ng serve
cre8
quelle

Antworten:

233

Angular CLI 6+

In der neuesten Version von Angular ist dies in der angular.jsonKonfigurationsdatei festgelegt . Beispiel:

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

Sie können auch verwendenng config , anzuzeigen / zu bearbeiten Werte:

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

Winkel-CLI <6

In früheren Versionen wurde diese in Setangular-cli.json unter dem defaultsElemente:

{
  "defaults": {
    "serve": {
      "port": 4444,
      "host": "10.1.2.3"
    }
  }
}
Tobias J.
quelle
7
Zur Vereinfachung können Sie 0.0.0.0anstelle der Host-IP angeben, dass alle Ethernet-Geräte abgehört werden sollen. Auf diese Weise können sowohl der lokale Host als auch die öffentliche IP-Adresse verwendet werden.
Dman
VS2017 scheint die Porteinstellung aus irgendeinem seltsamen Grund zu ignorieren, aber ich habe diesen Trick mit @dmans Zusatz (0.0.0.0 als Host) verwendet, um zumindest Remoteverbindungen zu aktivieren.
Ola Berntsson
4
Es scheint, dass sich die Dinge in den letzten Versionen der CLI geändert haben (ich verwende Version 6). Weitere Details finden Sie hier .
Nathan Friend
Gibt es eine Möglichkeit, diese Konfigurationsumgebung spezifisch zu gestalten?
Pankaj
71

Ab sofort wird diese Funktion nicht unterstützt. Wenn Sie dies jedoch stört, finden Sie eine Alternative in Ihrem package.json ...

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

Auf diese Weise können Sie einfach laufen npm start

Eine weitere Option, wenn Sie dies für mehrere Projekte tun möchten, besteht darin, einen Alias ​​zu erstellen, den Sie möglicherweise benennen ngservekönnen, um den obigen Befehl auszuführen.

Brocco
quelle
Entschuldigung, foo.bar, worauf beziehen? UPDATE: Ich habe es entfernt und funktioniert, aber ich weiß es nicht.
Muhammed Moussa
32

Sie können den Standard-HTTP-Port und den vom LiveReload-Server verwendeten mit zwei Befehlszeilenoptionen konfigurieren:

ng serve --host 0.0.0.0 --port 4201 --live-reload-port 49153

https://github.com/angular/angular-cli

Shreekant N.
quelle
28

Dies hat sich in der neuesten Angular CLI geändert.

Der Dateiname wurde in geändert angular.json, und die Struktur wurde ebenfalls geändert.

Folgendes sollten Sie tun:

"projects": {
    "project-name": {
        ...
        "architect": {
            "serve": {
                "options": {
                  "host": "foo.bar",
                  "port": 80
                }
            }
        }
        ...
    }
}
arsanyf
quelle
1
Arbeitete für mich mit @ angle / cli Version 6.1.5
PHEDev
1
Arbeitete für mich mit @ angle / cli Version 7.0.6
Kerry Jones
16

Eine andere Option besteht darin, einen ng serveBefehl mit der --portOption z

ng serve --port 5050 (dh für Port 5050)

Alternativ weist der Befehl : ng serve --port 0, automatisch einen verfügbaren Port zur Verwendung zu.

Mwiza
quelle
Das --port 0 bisschen war eine nette Info, aber ich bin nicht sicher, ob es die Frage beantwortet.
Ash
Gefiel die Option --port 0, die automatisch den verfügbaren Port für die Verwendung zugewiesen hat ...
vinsinraw
Die Frage fragt speziell, wie man es in einer Konfigurationsdatei
einstellt
11

Wir haben zwei Möglichkeiten, die Standardportnummer in Angular zu ändern.

Der erste Weg ist per CLI-Befehl:

ng serve --port 2400 --open

Der zweite Weg ist durch Konfiguration am Standort:

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

Nehmen Sie Änderungen in der Datei schema.json vor.

{
 "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
    },
Satyendra Patel
quelle
4
Sie möchten keine Quelldateien überschreiben oder ändern. angular.json ist der richtige Weg, um Schema-Standardeinstellungen zu überschreiben, wie in der akzeptierten Antwort erwähnt.
Bjørn Lindner
6

Sie können diese in einer Datei speichern, müssen sie jedoch .ember-cli(zumindest im Moment) ablegen. Siehe https://github.com/angular/angular-cli/issues/1156#issuecomment-227412924

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

Bearbeiten: Sie können diese jetzt in angular-cli.json ab Commit https://github.com/angular/angular-cli/commit/da255b0808dcbe2f9da62086baec98dacc4b7ec9 festlegen , das sich in Build 1.0.0-beta.30 befindet

Dan Mitchell
quelle
5

Wenn Sie das Winkelprojekt in benutzerdefiniertem Host / IP und Port ausführen möchten, müssen Sie keine Änderungen an der Konfigurationsdatei vornehmen

Der folgende Befehl hat bei mir funktioniert

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

Wo,

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

Beispiel

ng serve --host 192.168.322.144 --port 6300

Ergebnis für mich war

Geben Sie hier die Bildbeschreibung ein

Basilikum
quelle
3

Wenn Sie unter Windows arbeiten, können Sie dies folgendermaßen tun:

  1. Erstellen Sie in Ihrem Projektstammverzeichnis die Datei run.bat
  2. Fügen Sie Ihren Befehl mit der von Ihnen gewählten Konfiguration in dieser Datei hinzu. Beispielsweise

ng serve --host 192.168.1.2 --open

  1. Jetzt können Sie auf diese Datei klicken und sie öffnen, wann immer Sie sie bereitstellen möchten.

Dies ist keine Standardmethode, aber bequem zu bedienen (was ich fühle).

Sankeerth Mahurkar
quelle
0

Folgendes habe ich in package.json eingefügt (mit Winkel 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"
  },

Dann zieht ein einfacher npm-Start den Inhalt des Starts ein. Könnte auch andere Optionen zum Inhalt hinzufügen

John Dugger
quelle
0

Geben Sie hier die Bildbeschreibung ein

Nur eins musst du tun. Geben Sie dies in Ihre Eingabeaufforderung ein: ng serve --port 4021 [oder einen anderen Port, den Sie zuweisen möchten, z. B. 5050, 5051 usw.]. Keine Notwendigkeit, Änderungen an Dateien vorzunehmen.

Shahbaz Ali Khan
quelle
0

Wenn Sie Ihre lokale IP-Adresse beim Ausführen von ng serve speziell öffnen möchten, können Sie Folgendes tun:

npm install internal-ip-cli --save
ng serve --open --host $(./node_modules/.bin/internal-ip --ipv4)
Kim T.
quelle