Ustaw domyślny host i port dla usługi ng w pliku konfiguracyjnym

166

Chcę wiedzieć, czy mogę ustawić hosta i port w pliku konfiguracyjnym, więc nie muszę pisać

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

zamiast po prostu

ng serve
cre8
źródło

Odpowiedzi:

233

Angular CLI 6+

W najnowszej wersji kątowej, to jest w tym angular.jsonpliku konfiguracyjnym . Przykład:

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

Możesz również użyćng config do przeglądania / edycji wartości:

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

Kątowy CLI <6

W poprzednich wersjach było to ustawioneangular-cli.json pod defaultselementem:

{
  "defaults": {
    "serve": {
      "port": 4444,
      "host": "10.1.2.3"
    }
  }
}
Tobias J.
źródło
7
Aby to ułatwić, możesz określić adres 0.0.0.0IP hosta, aby nasłuchiwać na wszystkich urządzeniach Ethernet. W ten sposób można używać zarówno lokalnego hosta, jak i publicznego adresu IP.
dman
VS2017 wydaje się ignorować ustawienie portu z jakiegoś dziwnego powodu, ale użyłem tej sztuczki z dodatkiem @dman (0.0.0.0 jako host), aby przynajmniej umożliwić połączenia zdalne.
Ola Berntsson
4
Wygląda na to, że coś się zmieniło w ostatnich wersjach CLI (używam wersji 6). Więcej informacji znajdziesz tutaj .
Nathan Friend
Czy istnieje sposób, aby to środowisko konfiguracyjne było specyficzne?
Pankaj
71

W tej chwili ta funkcja nie jest obsługiwana, jednak jeśli jest to coś, co ci przeszkadza, alternatywa byłaby w twoim package.json ...

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

W ten sposób możesz po prostu biegać npm start

Inną opcją, jeśli chcesz to zrobić w wielu projektach, jest utworzenie aliasu, który możesz potencjalnie nazwać, ngservektóry wykona powyższe polecenie.

Brocco
źródło
przepraszam, foo.bar, polecam po co? UPDATE: usunąłem to i działa, ale nie wiem.
Muhammed Moussa
32

Możesz skonfigurować domyślny port HTTP i ten używany przez serwer LiveReload za pomocą dwóch opcji wiersza poleceń:

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

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

Shreekant N
źródło
29

Zmieniło się to w najnowszym Angular CLI.

Nazwa pliku została zmieniona na angular.json, a struktura również uległa zmianie.

Oto, co powinieneś zrobić:

"projects": {
    "project-name": {
        ...
        "architect": {
            "serve": {
                "options": {
                  "host": "foo.bar",
                  "port": 80
                }
            }
        }
        ...
    }
}
arsanyf
źródło
1
Pracowałem dla mnie z @
angular
1
Pracowałem dla mnie z @ angular / cli w wersji 7.0.6
Kerry Jones
16

Inną opcją jest uruchomienie ng servepolecenia z --portopcją np

ng serve --port 5050 (tj. dla portu 5050)

Alternatywnie, polecenie ng serve --port 0:, automatycznie przypisze dostępny port do użycia.

Mwiza
źródło
--port 0 Nieco było miłe informacji, ale nie jestem pewien, że odpowiedź na pytanie.
Ash
Podobała mi się opcja --port 0, która automatycznie przypisała dostępny port do użycia ...
vinsinraw
Pytanie konkretnie dotyczy tego, jak ustawić to w pliku konfiguracyjnym
Ojonugwa Jude Ochalifu
11

Mamy dwa sposoby zmiany domyślnego numeru portu w Angular.

Pierwszy sposób to polecenie CLI:

ng serve --port 2400 --open

Drugi sposób to konfiguracja w lokalizacji:

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

Wprowadź zmiany w pliku 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
    },
Satyendra Patel
źródło
4
Nie chcesz nadpisywać ani zmieniać plików źródłowych. angular.json to poprawny sposób na przesłonięcie wartości domyślnych schematu, jak wspomniano w zaakceptowanej odpowiedzi.
Bjørn Lindner
5

Jeśli planujesz uruchomić projekt kątowy w niestandardowym hoście / IP i porcie, nie ma potrzeby wprowadzania zmian w pliku konfiguracyjnym

Następujące polecenie zadziałało dla mnie

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

Gdzie,

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

Przykład

ng serve --host 192.168.322.144 --port 6300

Wynik dla mnie był

wprowadź opis obrazu tutaj

Bazylia
źródło
3

Jeśli korzystasz z systemu Windows, możesz to zrobić w ten sposób:

  1. W katalogu głównym projektu utwórz plik run.bat
  2. Dodaj swoje polecenie z wybranymi konfiguracjami w tym pliku. Na przykład

ng serve --host 192.168.1.2 --open

  1. Teraz możesz kliknąć i otworzyć ten plik, kiedy chcesz służyć.

To nie jest standardowy sposób, ale wygodny w użyciu (co czuję).

Sankeerth Mahurkar
źródło
0

oto co umieściłem w package.json (z uruchomionym angularem 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"
  },

Wtedy zwykły start npm ściągnie zawartość startu. Można również dodać inne opcje do zawartości

John Dugger
źródło
0

wprowadź opis obrazu tutaj

Tylko jedna rzecz, którą musisz zrobić. Wpisz to w wierszu polecenia: ng serv --port 4021 [lub inny port, który chcesz przypisać, np. 5050, 5051 itd.]. Nie ma potrzeby dokonywania zmian w plikach.

Shahbaz Ali Khan
źródło
0

Jeśli chcesz, aby Twój lokalny adres IP był otwarty podczas uruchamiania usługi ng, możesz wykonać następujące czynności:

npm install internal-ip-cli --save
ng serve --open --host $(./node_modules/.bin/internal-ip --ipv4)
Kim T.
źródło