15

我已经使用angular-cli. 有一个AppModuleAppComponent我想在其他 Angular 应用程序中使用AppModule它及其组件 ( )。AppComponent所以我创建了index.ts文件并导出了AppModuleAppComponent

export {AppModule} from './src/app/app.module';
export {AppComponent} from './src/app/app.component';

然后使用创建本地链接npm link并使用 package.json 中定义的名称创建链接。

现在在我想使用这个导出模块的其他项目中运行

npm link project-name

链接已成功完成。我试过了

import { AppModule as AModule} from 'my-components';

但这不起作用,因为 webpack 无法编译 AppModule 文件,因为引用没有得到解决。在 SystemJs 我们在 systemjs.config.js 文件中定义了 this 的映射,但是没有配置文件。

我该如何解决这个问题?

有没有其他方法可以重用本地模块?

4

6 回答 6

8

在 Angular 7 中,"preserveSymlinks": true

它对我有用:项目>架构师>构建>选项

于 2019-10-10T20:51:14.177 回答
5

将以下内容添加到tsconfig.json您正在加载 npm 链接库的主机应用程序中。

    "paths": {
      "@angular/*": ["node_modules/@angular/*"]
    }

显然,链接的包不能正常使用对等依赖项。这将强制库使用您的应用程序的 node_modules/@angular/* 库,这就是您npm install使用 lib 时发生的情况。

于 2019-03-26T11:39:44.080 回答
2

它现在正在 "preserveSymlinks": true您的 angular.json 中使用。

只需将它添加到那里:项目>架构师>构建。

于 2019-05-15T08:59:37.177 回答
1

这是目前似乎尚未完全解决的热门话题。我得到了以下信息:

链接由 angular cli 创建的库并不容易。您可以在文档中阅读

https://github.com/angular/angular-cli/wiki/stories-linked-library

通过遵循 nimaen 在这篇文章https://github.com/angular/angular-cli/issues/3875中提供的评论,我能够使其工作

——BR丹尼斯

于 2017-08-20T22:58:09.333 回答
1

你将无法。让我引用

我们目前不支持使用 CLI 构建库。我们确实支持链接在 CLI 应用程序中正确构建的库。

https://github.com/angular/angular-cli/issues/9273

于 2018-07-25T14:42:30.120 回答
0

您可以删除项目的链接以tsconfig.js归档您希望在源代码表单中工作的任何模块。

请注意,模块别名必须是指向没有tsjs扩展名的 TypeScript 文件的指针,而不是指向文件目录的指针package.json

{
  "compilerOptions": {
    ...
    "paths": {
      "my-third-party-package": [
        // Can be project root relative path or abs path on your hd
        "projects/my-third-party-package/src/index"
      ],
    }
  },
}
于 2020-05-04T12:43:44.750 回答