首页 > 解决方案 > 如何在库中使用 Angular 应用程序库

问题描述

我有一个带有定义服务的角度应用程序。而且我还定义了几个库。我不能做的是在我的一个库中使用应用程序服务。

当我尝试将“myappservice”导入“mylibservice”时,它给了我这个错误:

... is not under 'rootDir' .... 'rootDir' is expected to contain all source files.

mylibservice.service.ts

import { MyAppService} from 'src/app/services/myappservice.service';

@Injectable({
  providedIn: "root",
})

export class ObjectTypesService {
...
constructor(
    private myappservice: MyAppService
  ) {
...

有人可以帮助我在我的图书馆中使用这项服务吗?

标签: javascriptangulartypescriptfrontend

解决方案


您可以构建您的 lib 模块,将其发布到 npm 并通过 npm 将其添加到 package.json 中。

您可以构建您的 lib 模块,而不是将其发布到 npm,您可以在 package.json 中导入 .tgz 文件。

您可以使用一些已经解决此问题的 monorepo,例如https://nx.dev/。在此解决方案中,您将所有库和应用程序存储在同一个 git 存储库中,您可以将库导入应用程序,而无需在每次更改后将其发布到 npm。这有不利的一面,因为您必须每次都构建应用程序和所有库。

是否也可以在这个 monorepo 中构建 lib 作为 npm 包。如果您需要在 monorepo 之外的其他应用程序或来自 monorepo 的应用程序中使用它作为 npm 依赖项。


推荐阅读