如何在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 serveng 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"
}
}
},

最新更新