首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何导入脚本的基础上的--项目的角度6+?

如何导入脚本的基础上的--项目的角度6+?
EN

Stack Overflow用户
提问于 2018-11-13 13:21:52
回答 1查看 123关注 0票数 0

好吧,假设我有这样的结构:

代码语言:javascript
复制
/
- clients
-- client-1
--- _script.ts
-- client-2
--- _script.ts

我的angular.json是这样的:

代码语言:javascript
复制
...
'projects': {
    "client-1": {...},
    "client-2": {...},
}
...

假设我有相同的代码,但是在两个script.ts文件中变量的值不同,如下所示:

客户-1/script.ts:

代码语言:javascript
复制
export const theme = {
  data_url_api: 'https://client-1.com/api',
}

客户-2/script.ts:

代码语言:javascript
复制
export const theme = {
  data_url_api: 'https://client-2.com/api',
}

在不强制“客户端路径”的情况下,如何在代码中动态导入和调用该文件?当然,查看我在ng serveng build上使用的ng serve

我的愿望是像这样导入它,让我们再说一遍,在一个‘data.service.ts’中:

代码语言:javascript
复制
import { theme } from 'script';

角度本身会处理“进口哪一个”。

有办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-13 13:28:07

如果您有两个项目,这将是一个“共享”服务/组件/文件.

因此,我会将其标记为这样(例如,将该文件放在一个特定的共享文件夹中),这将帮助您(以及您的同事)记住,对该文件的每一项更改都可能对多个项目产生影响。

导入时,我使用tsconfig.json中的“路径”

代码语言:javascript
复制
{
  "compilerOptions": {
    "baseUrl": "projects",
    "paths": {
      "@project1/*": [
        "myFirstProject/src/app/*"
      ],
      "@project2/*": [
        "mySecondProject/src/app/*"
      ],
      "@shared/*": [
        "shared/src/*"
      ],
    }
  }
}

现在我可以用

代码语言:javascript
复制
import {something} from @shared/myTheme;

从各地

温暖的问候

编辑:

我的错,错误的解决方案:-)

如果它是相同的服务,但是不同的端点,我使用一个环境变量来更改它。在angular.json中,我用特定于项目的environment.ts覆盖通用environment.ts。

代码语言:javascript
复制
 ...
 "configurations": {
            "dev": {
              "fileReplacements": [
                {
                  "replace": "projects/environments/environment.ts",
                  "with": "projects/myFirstProject/src/environments/environment.dev.ts"
                }
              ]
            },
...
}

我有每个项目和每个阶段的环境文件(有3个阶段=> 6环境文件的2个项目)。

有了这个功能,我就能够对每个应用程序进行全局的更改,并取决于暂存环境。

抱歉你误会了

温暖的问候

第二次编辑

在它制造问题之前。如果根据配置替换文件,则不仅应该修改“构建”部分,还要修改“服务”部分,以便在使用ng serve时也可以使用您的环境。

代码语言:javascript
复制
"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"
            }
          }
        },
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53281966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档