首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角度库交叉依赖

角度库交叉依赖
EN

Stack Overflow用户
提问于 2019-02-18 13:06:24
回答 3查看 1.9K关注 0票数 4

我正在寻找一些Angular7库的帮助。

我有一个项目A,其中我开发了两个库--库1库2。第二个库(库2)依赖于第一个库(库1)。稍后,在另一个项目中,假设项目B I可以使用库2

我的问题是如何指定库2依赖于库1。目前,这两个库构建在项目根的一个文件夹libs/中--这使得从库1导入的库2使用并没有指定它在package.json文件中对库1的依赖。

库1 package.json

代码语言:javascript
复制
{
  "name": "library-1",
  "version": "0.0.1",
  "peerDependencies": {
    "@angular/common": "^7.1.0",
    "@angular/core": "^7.1.0"
  }
}

图书馆2 package.json

代码语言:javascript
复制
{
  "name": "library-2",
  "version": "0.0.1",
  "peerDependencies": {
    "@angular/common": "^7.1.0",
    "@angular/core": "^7.1.0",
    "@angular/material": "7.2.0",
    "library-1": "0.0.1"
  }
}

另外,它们的build+dev位置在主tsconfig.json文件中指定:

代码语言:javascript
复制
{
  ...,
  "compilerOptions": {
    ...,
    "paths": {
      "library-1": ["libs/library-1", "projects/library-1/src/"],
      "library-1/*": ["libs/library-1/*", "projects/library-1/src/*"],
      "library-2": ["libs/library-2", "projects/library-2/src/"],
      "library-2/*": ["libs/library-2/*", "projects/library-2/src/*"]
    }
  }
}

如果没有安装第一个库,我是否可以明确说明第二个库不编译?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-05 13:16:45

如果其他人有类似的设置,并想知道我做了什么。

1.添加指向根级tsconfig.json中特定的tsconfig.json的不同库的路径。这允许在主项目中使用库时动态编译。

代码语言:javascript
复制
{ 
   ...options,
   "paths": { 
       "library-1": "projects/library-1/src/public_api.ts",
       "library-2": "projects/library-2/src/public_api.ts"
   }
}

2.在库的package.json中增加了对等依赖-2到库-1。如果在项目中使用库-2而不添加库-1作为依赖项,这将显示警告。

代码语言:javascript
复制
{
    ...options, 
    "peerDependencies": {
         "library-1": "0.1"
     }
}
  1. 添加了一个额外的tsconfig.build.json,扩展了tsconfig.lib.json并重写了来自根tsconfig的库-1的路径,以使用该库的编译代码。这将用编译好的源代码构建库-2,而不仅仅是混合它并从库直接导入。
代码语言:javascript
复制
{
  "extends": "./tsconfig.lib.json",
  "compilerOptions": {
    "paths": {
      "library-1": ["dist/libs/library-1"]
    }
  }
}

4.使用以下命令构建库-2,以便使用新的tsconfig.build.json。

代码语言:javascript
复制
ng-packagr -p projects/library-2/ng-package.json -c projects/library-2/tsconfig.build.json
票数 3
EN

Stack Overflow用户

发布于 2021-10-05 02:36:19

我在tsconfig.json上也犯了同样的错误

代码语言:javascript
复制
 "paths": {
      "dxp-lib-commons": [
        "projects/dxp-lib-commons/src/public-api.ts"
      ],
      "dxp-lib-components": [
        "projects/dxp-lib-components/src/public-api.ts"
      ],
      "dxp-lib-services": [
        "projects/dxp-lib-services/src/public-api.ts"
      ]
    },

因此,它是其他两个的基础,我已经指出了公共api,ts在开发和使用它的速度。然而,当我们在此基础上进行构建时,它将崩溃,而“rootDir”将包含所有源文件。

因此,在查看了几篇文章之后,我发现在构建过程中,有必要指向dist和编译的公域,而不是我在tsconfig.lib.prod.json上添加的组件和服务等公共api.ts。

代码语言:javascript
复制
"paths": {
  "dxp-lib-commons": [
    "dist/dxp-lib-commons"
  ]
}

而且起作用了。

票数 1
EN

Stack Overflow用户

发布于 2019-02-18 13:19:41

是的,可以将第一个项目指定为第二个项目package.json文件的依赖项:

代码语言:javascript
复制
"dependencies": {
    "Local first project": "file:../myprojectfolder/myprojectpackagefolder"
    "Git First project": "git+ssh://git@gitlab.mydomain:first-project.git" 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54748028

复制
相关文章

相似问题

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