好吧,假设我有一个这样的结构:
/
- 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
或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中,我用特定于项目的环境.ts 覆盖通用环境.ts
...
"configurations": {
"dev": {
"fileReplacements": [
{
"replace": "projects/environments/environment.ts",
"with": "projects/myFirstProject/src/environments/environment.dev.ts"
}
]
},
...
}
我每个项目和每个阶段都有一个环境文件(2个项目有3个阶段=>6个环境文件(
有了这一点,我就可以根据每个应用程序和阶段环境全局地进行更改。
抱歉的误解
热烈问候
第二次编辑
在它制造问题之前。如果根据配置替换文件,则不仅应修改"构建"部分,还应修改"服务"部分,以便在使用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"
}
}
},