angular - 如何在 Angular 6+ 上基于 --project 导入脚本?
问题描述
好的,假设我有这样的结构:
/
- clients
-- client-1
--- _script.ts
-- client-2
--- _script.ts
我的 angular.json 是这样的:
...
'projects': {
"client-1": {...},
"client-2": {...},
}
...
假设我有相同的代码,但在 2 个 script.ts 文件中的变量值不同,例如:
客户端 1/script.ts:
export const theme = {
data_url_api: 'https://client-1.com/api',
}
客户端 2/script.ts:
export const theme = {
data_url_api: 'https://client-2.com/api',
}
如何在我的代码中动态导入和调用此文件,而不强制使用“客户端路径”?当然,遵守--project=client-1
我在ng serve
or上使用的ng build
。
我的愿望是像这样导入它,让我们再说一遍,在“data.service.ts”中:
import { theme } from 'script';
Angular 本身会处理“要导入哪个”。
那么,有没有办法呢?
解决方案
如果您有两个项目,这将是一个“共享”服务/组件/文件...
因此我会这样标记它(例如通过将该文件放在特定的共享文件夹中)这将帮助您(和您的同事)记住,对该文件的每次更改都可能对多个项目产生影响。
对于导入,我使用 tsconfig.json 中的“路径”
{
"compilerOptions": {
"baseUrl": "projects",
"paths": {
"@project1/*": [
"myFirstProject/src/app/*"
],
"@project2/*": [
"mySecondProject/src/app/*"
],
"@shared/*": [
"shared/src/*"
],
}
}
}
现在我可以使用
import {something} from @shared/myTheme;
从各地
温暖的问候
编辑:
我的错,错误的解决方案:-)
如果它是相同的服务,但不同的端点,我使用环境变量来改变它。在 angular.json 我用项目特定的 environment.ts 覆盖通用 environment.ts
...
"configurations": {
"dev": {
"fileReplacements": [
{
"replace": "projects/environments/environment.ts",
"with": "projects/myFirstProject/src/environments/environment.dev.ts"
}
]
},
...
}
我每个项目和每个分期都有一个环境文件(2 个项目,3 个阶段 => 6 个环境文件)
有了它,我可以根据应用程序并根据登台环境在全球范围内更改内容。
很抱歉造成的误解
温暖的问候
第二次编辑
在它出现问题之前。如果你根据配置替换文件,你不仅要修改“build”部分,还要修改“serve”部分,这样你的环境在使用时也会被使用ng serve
"projects": {
"myFirstProject": {
"root": "projects/myFirstProject/",
"sourceRoot": "projects/myFirstProject/src",
"projectType": "application",
...
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
...
},
"configurations": {
"dev": {
"fileReplacements": [
{
"replace": "projects/environments/environment.ts",
"with": "projects/myFirstProject/src/environments/environment.dev.ts"
}
]
},
"proxy": {
"fileReplacements": [
{
"replace": "projects/environments/environment.ts",
"with": "projects/myFirstProject/src/environments/environment.proxy.ts"
}
]
},
"production": {
"fileReplacements": [
{
"replace": "projects/environments/environment.ts",
"with": "projects/myFirstProject/src/environments/environment.prod.ts"
}
]
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "myFirstProject:build:dev"
},
"configurations": {
"dev": {
"browserTarget": "myFirstProject:build:dev"
},
"proxy": {
"browserTarget": "myFirstProject:build:proxy"
},
"production": {
"browserTarget": "myFirstProject:build:production"
}
}
},
推荐阅读
- node.js - 格式化数据以使用高图表在折线图上绘制
- django - 404 关于在 Django 应用程序中使用 Azure 存储
- c++ - 如何检查一个字符是否与字符数组中的另一个字符匹配?
- c++ - 如何在 C++ 中逐行从文件中获取单词并用分号分隔?
- assembly - 将汇编文件转换为 nasm 中的十六进制转储
- html - 链接到另一个页面中的部分
- sql - 优化查找好友的查询
- python - 我正在尝试用 Python 编写加密。我的问题是密钥比消息短。因此我应该从钥匙重新开始
- firebase - 无法使用 cypress 使用 Firestore 本地模拟器测试应用程序
- r - 如何在包中设置选项