ng serve 和 ng build 的 cli config 中的不同资产 [Angular 5]
Posted
技术标签:
【中文标题】ng serve 和 ng build 的 cli config 中的不同资产 [Angular 5]【英文标题】:Different assets in cli config for ng serve and ng build [Angular 5] 【发布时间】:2018-06-04 06:12:56 【问题描述】:当我使用ng build
时可以使用不同的资产数组吗?
"assets": [
"assets",
"favicon.ico",
"glob": "**/*",
"input": "../externalDir",
"output": "./app/",
"allowOutsideOutDir": true
]
就我而言,当我使用ng build
时,我只想构建这个:
"assets": [
"assets",
"favicon.ico"
]
【问题讨论】:
【参考方案1】:我的情况是在每个环境中包含不同的 robots.txt 文件。因此,在src/environments
文件夹中,我创建了两个文件:robots.txt
和robots.prod.txt
。在angular.json
中将其包含在assets
数组中并使用fileReplacements
如下(我只粘贴相关部分):
"architect":
"build":
"options":
"assets": [
"src/assets",
"glob": "robots.txt",
"input": "src/environments/",
"output": "/"
]
,
"configurations":
"production":
"fileReplacements": [
"replace": "src/environments/robots.txt",
"with": "src/environments/robots.prod.txt"
]
我正在使用@angular/cli: ~8.3.4
。
【讨论】:
Angular 从不打算将文件替换用于未包含在包中的文件。我不相信这适用于 Angular 9 及更高版本。看到这个问题:github.com/angular/angular-cli/issues/16779【参考方案2】:我不认为可以选择制作特定于环境的资产。但是您可以在 angular-cli.json 中创建其他应用程序,它们基本上只是彼此的副本,但具有不同的资产。例如
// angular-cli.json
"apps": [
"root": "src",
"outDir": "dist",
"name": "devApp",
"assets" : [
"assets",
"favicon.ico",
"glob": "**/*",
"input": "../externalDir",
"output": "./app/",
"allowOutsideOutDir": true
,
],
...
,
"root": "src",
"outDir": "dist",
"name": "prodApp",
"assets": [
"assets",
"favicon.ico"
],
...
]
现在您可以通过构建特定的“应用”以不同方式构建资产
// dev
ng build --app=0
// or
ng build --app=devApp
// prod
ng build --app=1
// or
ng build --app=prodApp
多个应用程序上的 Angular cli docs。
【讨论】:
以上是关于ng serve 和 ng build 的 cli config 中的不同资产 [Angular 5]的主要内容,如果未能解决你的问题,请参考以下文章
错误,使用 ng-cli 运行 ng serve 时编译失败
如何让“ng serve”等待“ng build”完成使用 ng 库?
使用 ng build --prod 构建时出错。没有 --prod 标志和 ng serve 很好
运行 ng serve 时找不到模块“@angular/compiler-cli/ngc”