创建一个角度库并在我的角度项目中本地使用它

ufk*_*ufk 3 angular-cli angular angular-library pnpm

我正在尝试使用 Angular 9,我想创建一个项目,然后创建一个库项目并开始向其中添加我想稍后在 GitHub 上发布的通用模块,并在我的项目中本地使用这些库。

以下是相关依赖项:

Angular CLI: 9.0.0-rc.6
Node: 13.3.0
OS: MacOS 10.15.2
PNPM: 4.3.0
Run Code Online (Sandbox Code Playgroud)

首先,我创建了我的角度项目,ng new foo并添加了角度材质依赖项ng add @angular/material

然后我创建了我的库项目并ng new tuxin-ec --create-application=false 在其中执行了ng generate library animated-images --prefix=tuxin-ec.

我打算创建 15 个左右的公共库来使用和发布。这是这样做的方法吗?ng generate library只是为每一个人做些什么?

目前,在tuxin-ec项目目录中的项目下,我animated-images包含一个模块、服务和控制器,我将相关代码添加到控制器 html 和 css 中。

我想tuxin-ec在我的项目中进行本地链接。所以在tuxin-ec我运行的根目录下pnpm link 和在foo我运行的目录下pnpm link tuxin-ec

foo在目录下node_modules我还有 tuxin-ec 链接目录。

问题是我想做import {AnimatedImagesModule} from 'tuxin-ec ,但它抱怨找不到tuxin-ec

我能做的是import {AnimatedImagesModule} from 'tuxin-ec/dist/animated-images'

但即使这样,当我尝试导入AnimatedImagesModule我的项目时,我也会收到一个错误class AnimatedImagesModule is not an angular module

有什么方法可以达到我的预期结果吗?

谢谢你!

ufk*_*ufk 6

所以我在谷歌上搜索了一些,发现了以下精彩的教程:https ://willtaylor.blog/complete-guide-to-angular-libraries/

在那里我明白我不链接我的整个项目,我链接特定的模块,这实际上很有意义:)

所以在 dist/animated-images 目录中我应该执行npm link,然后在我的项目中我应该执行npm link animated-images。就是这样!很简单!