在配置文件中设置ng服务的默认主机和端口


166

我想知道是否可以在配置文件中设置主机和端口,所以我不必键入

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

而不只是

ng serve

Answers:


233

Angular CLI 6+

在最新版本的Angular中,这是在config文件中设置angular.json。例:

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

您还可以ng config用来查看/编辑值:

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

Angular CLI <6

在以前的版本中,这是angular-cli.jsondefaults元素下方设置的:

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

7
为了简化操作,您可以指定0.0.0.0而不是主机ip来侦听所有以太网设备。这样,本地主机和公共IP地址都可以使用。
dman

VS2017似乎出于某种奇怪的原因而忽略了端口设置,但我将此技巧与@dman的添加(以0.0.0.0作为主机)一起使用,以至少启用远程连接。
奥拉·伯恩森

4
似乎在最新版本的CLI(我正在使用版本6)中,情况已经发生了变化。有关更多详细信息,请参见此处
弥敦道之友

有没有办法使此配置环境特定?
Pankaj

71

截至目前,该功能不受支持,但是,如果这让您感到困扰,则可以在package.json中找到一个替代方案...

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

这样您可以简单地运行 npm start

如果要跨多个项目执行此操作,另一个选择是创建一个别名,您可以命名ngserve该别名,该别名将执行上述命令。


抱歉,foo.bar请指些什么?更新:我将其删除并工作,但不知道。
穆罕默德·穆萨


29

这在最新的Angular CLI中已更改。

文件名更改为angular.json,结构也更改。

这是您应该做的:

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

1
为我使用@ angular / cli版本6.1.5
PHEDev

1
为我使用@ angular / cli版本7.0.6
Kerry Jones

16

另一个选项是运行ng serve带有--port选项的命令,例如

ng serve --port 5050 (即用于端口5050)

或者,命令:ng serve --port 0将自动分配一个可用端口。


--port 0 位是好的信息,但我不知道它回答了这个问题。

喜欢--port 0选项,该选项自动分配了要使用的可用端口...
vinsinraw

该问题专门询问如何在配置文件中进行设置
Ojonugwa Jude Ochalifu

11

我们有两种方法可以更改Angular中的默认端口号。

第一种方法是通过CLI命令:

ng serve --port 2400 --open

第二种方法是在该位置进行配置:

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

在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
    },

4
您不想覆盖或更改源文件。如已接受的答案所述,angular.json是覆盖架构默认值的正确方法。
比昂·林德纳


5

如果您打算在自定义主机/ IP端口中运行角度项目,则无需在配置文件中进行更改

以下命令对我有用

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

哪里,

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

ng serve --host 192.168.322.144 --port 6300

对我来说结果是

在此处输入图片说明


3

如果您在Windows上,则可以通过以下方式进行操作:

  1. 在项目根目录中,创建文件run.bat
  2. 在此文件中添加您的命令以及您选择的配置。例如

ng serve --host 192.168.1.2 --open

  1. 现在,您随时可以单击并打开此文件。

这不是标准方式,但使用起来很舒适(我感觉)。


0

这是我放入package.json(运行角度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"
  },

然后,简单的npm start将拉入start的内容。也可以向内容添加其他选项



0

如果要在运行ng serve时专门打开本地IP地址,可以执行以下操作:

npm install internal-ip-cli --save
ng serve --open --host $(./node_modules/.bin/internal-ip --ipv4)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.