gpt4 book ai didi

angular - 在两个构建中拆分 Angular CLI 应用程序

转载 作者:太空狗 更新时间:2023-10-29 18:35:56 29 4
gpt4 key购买 nike

我有一个使用 CLI 在 Angular 7 上构建的 Angular 解决方案。该应用程序有 2 个区域。它们没有以任何方式连接,但它们使用相同的代码库。

现在我可以转到 http://localhost:4200/app1http://localhost:4200/app2。但是它们在同一个实例上运行。我想修改我的配置,这样我就可以写类似

ng build --app=app1

并获得一个独立的解决方案。有什么建议吗?

下面是我的 angular.json 文件。如您所见,我已经准备好用于开发、暂存和生产的设置。这意味着此刻,我可以写

ng build --build-optimizer --configuration=staging

并为暂存环境获取构建。

{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"vhTogo": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"prefix": "app",
"schematics": {},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist/vhTogo",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.app.json",
"assets": [
"src/assets",
"src/manifest.json"
],
"styles": [
"src/styles/styles.scss"
],
"scripts": []
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"outputPath": "dist/production",
"vendorChunk": true,
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"buildOptimizer": true,
"serviceWorker": true
},
"staging": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.staging.ts"
}
],
"outputPath": "dist/staging",
"vendorChunk": true,
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"buildOptimizer": true,
"serviceWorker": true
},
"development": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.development.ts"
}
],
"outputPath": "dist/development",
"vendorChunk": true,
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"buildOptimizer": true,
"serviceWorker": true
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "vhTogo:build"
},
"configurations": {
"production": {
"browserTarget": "vhTogo:build:production"
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "vhTogo:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "src/karma.conf.js",
"styles": [
"src/styles/styles.scss"
],
"scripts": [],
"assets": [
"src/assets",
"src/manifest.json"
]
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"src/tsconfig.app.json",
"src/tsconfig.spec.json"
],
"exclude": [
"**/node_modules/**"
]
}
}
}
},
"vhTogo-e2e": {
"root": "e2e/",
"projectType": "application",
"architect": {
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "e2e/protractor.conf.js",
"devServerTarget": "vhTogo:serve"
},
"configurations": {
"production": {
"devServerTarget": "vhTogo:serve:production"
}
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": "e2e/tsconfig.e2e.json",
"exclude": [
"**/node_modules/**"
]
}
}
}
}
},
"defaultProject": "vhTogo",
"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
}
}
}

最佳答案

使用 cli您可以在同一个代码库(repo)中生成多个 Angular 项目,并且可以分别构建、开发或服务它们。这样您就可以在前端级别实现微服务架构。如果您在同一域下有不同的产品并且您希望通过不同的路径将它们分开,这是最好的方法。

以下是一些可以帮助您构建这种架构的步骤

  1. 生成多个 Angular 应用程序:ng generate application <project-name> click在这里获取信息

  2. 分别构建和提供它们:ng build project-nameng serve project-name

  3. 配置路由:要使此路由成为可能,您必须配置 nginx代理服务器。

您必须在nginx 脚本中使用location block 来从不同的项目提供服务,以下脚本仅用于演示请引用docs全面实现。

server {
listen 4200;

location / {
proxy_pass http://localhost:4201; # your root project
}

location /app1 {
proxy_pass http://localhost:4202; # your app1 project
}

location /app2 {
proxy_pass http://localhost:4203; # your app2 project
}

}

对于生产,您可以在位置 block 中提供相应项目的 index.html 文件

关于angular - 在两个构建中拆分 Angular CLI 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54155334/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com