Can't use an array of hostnames in --allowedHosts cli parameter in @angular/build:dev-server
- 主要語言
- TypeScript
- 星號
- 27k
- 分支
- 11.8k
- 平均合併
- 14 小時 23 分鐘
- 30 天內合併 PR
- 162
描述
### Command
serve
### Is this a regression?
- [ ] Yes, this behavior used to work in the previous version
### The previous version in which this bug was not present was
_No response_
### Description
When using `@angular-devkit/build-angular:dev-server` I can use `--allowedHosts` parameter with array of hostnames, so my hostnames can be dynamic.
But when using `@angular/build:dev-server` the array of names is not recognized (only boolean type is passed instead?)
```bash
ng serve myproject --allowed-hosts "example.com"
```
"**Error: Unknown argument: example.com**"
Workaround:
```bash
__VITE_ADDITIONAL_SERVER_ALLOWED_HOSTS=example.com ng serve myproject
```
or hard code in the array format in `angular.json` like mentioned in https://github.com/angular/angular/issues/64104
Comparing the two builder i can see this difference if you "patch" `@angular/build:dev-server`'s schema.json, then the command will work.
https://github.com/angular/angular-cli/blob/main/packages/angular_devkit/build_angular/src/builders/dev-server/schema.json
vs
https://github.com/angular/angular-cli/blob/main/packages/angular/build/src/builders/dev-server/schema.json
```diff
"allowedHosts": {
+ "type": "array",
"description": "The hosts that the development server will respond to. This option sets the Vite option of the same name. For further details: https://vite.dev/config/server-options.html#server-allowedhosts",
"default": [],
+ "items": {
+ "type": "string"
+ }
- "oneOf": [
- {
- "type": "array",
- "description": "A list of hosts that the development server will respond to.",
- "items": {
- "type": "string"
- }
- },
- {
- "type": "boolean",
- "description": "Indicates that all hosts are allowed. This is not recommended and a security risk."
- }
- ]
},
```
@see issue * PR for the devkit commit that added the option:
- https://github.com/angular/angular-cli/issues/13656
- https://github.com/angular/angular-cli/pull/15366
It note that `@angular-devkit/build-angular:dev-server` also has a (custom?) `--disableHostCheck` parameter which sets `allowedHosts` to `true` if passed, so then disable all hosts situation can be covered as schema no longer allows boolean, only array.
Not sure how to fix properly.
### Minimal Reproduction
-
### Exception or Error
```text
```
### Your Environment
```text
-
```
### Anything else relevant?
_No response_
貢獻指南
研究方向
比較 packages/angular/build/src/builders/dev-server/schema.json 與 packages/angular_devkit/build_angular/src/builders/dev-server/schema.json,重點關注 allowedHosts 定義以及相關的 dev-server 選項處理。確認其與現有 disableHostCheck 行為的預期相容性,然後驗證 @angular/build:dev-server 能夠透過 CLI 接受主機名稱陣列,同時不會破壞受支援的 all-hosts 選項。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- angular, typescript, vite
- 領域
- build-system, cli
- Issue 類型
- 缺陷
- 難度
- 2/5
- 預估耗時
- 1-3 小時
- 活躍度
- 活躍
- 描述清晰度
- 基本清楚
- 新手友好度
- 74/100