npm link 不适用于 angular-cli 创建的项目

npm link is not working with angular-cli created projects

我使用 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 创建本地 linking 并使用 package.json 中定义的名称创建 link。

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

npm link project-name

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

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

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

我该如何解决这个问题?

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

这是目前的热门话题,似乎还没有完全解决。我得到以下信息:

链接由 angular 客户端创建的库并不那么容易。您可以阅读文档

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

我能够按照 nimaen 在此 post https://github.com/angular/angular-cli/issues/3875

中提供的评论使其工作

--BR 丹尼斯

你做不到。让我引用

We don't support Library building with the CLI right now. We do support linking libraries built properly inside a CLI application.

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

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

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

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

它现在可以在您的 angular.json 中使用 "preserveSymlinks": true

只需将其添加到此处:项目 > 架构师 > 构建。

在Angular7、"preserveSymlinks": true

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

您可以将指向项目的链接拖放到 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"
      ],
    }
  },
}