Javascript 操作:角度库划分为独立的要素子库
我目前正在开发一个Angular库(Angular v8.1.0),想知道如何将它“拆分到不同的子库中” 例如,角度(Javascript 操作:角度库划分为独立的要素子库,javascript,angular,typescript,angular-library,ng-packagr,Javascript,Angular,Typescript,Angular Library,Ng Packagr,我目前正在开发一个Angular库(Angular v8.1.0),想知道如何将它“拆分到不同的子库中” 例如,角度(@Angular)以某种方式分为不同的“部分”,如: @angular/common @angular/core @angular/forms 等等 例如,@angular/common有不同的子目录可从中导入: @angular/common/http @angular/common/locale @angular/common/testing 我想知道如何在我自己的A
@Angular
)以某种方式分为不同的“部分”,如:
@angular/common
@angular/core
@angular/forms
- 等等
@angular/common
有不同的子目录可从中导入:
@angular/common/http
@angular/common/locale
@angular/common/testing
cool lib
,有不同的功能模块,它们包含自己的服务/组件等:common
,featureA
,featureB
我想实现这样的目标:
从'cool lib/common'导入{CommonService};
从'cool lib/feature-a'导入{FeatAComponent,FeatAService};
从'cool lib/feature-b'导入{FeatBModule};
而不是:
import{
公共服务,
羽毛成分,
FeatAService,
特征模块
}来自“酷lib”;
而且,如果能够独立地增加不同功能模块的版本号,或者只安装需要的功能模块,而不必安装整个库,那就更好了(假设我只需要featureA
)
例如,在我的package.json上有:
{
"dependencies": {
"cool-lib/common": "1.0.0",
"cool-lib/feature-a": "1.0.0",
"cool-lib/feature-b": "1.3.0"
}
}
或者只是:
{
"dependencies": {
"cool-lib/feature-a": "1.0.0"
}
}
而不是:
{
"dependencies": {
"cool-lib": "1.0.0"
}
}
到目前为止,我已经阅读了很多关于创建Angular库的内容,但是找不到这个特定的用例,因为它们都只涉及在npm上创建和发布它们的基础知识。。。因此,任何关于这方面的帮助都是非常受欢迎的 Angular已经支持多个子库开箱即用 默认项目结构包含一个“app”应用程序,该应用程序是一个常规的角度项目,然后添加其他属于角度库项目的子库。在
库
子文件夹中放置有
单个角度项目可以包含多个子库项目
每个子库项目都可以作为单独的npm包发布,因为它们有自己的package.json
文件
npm支持称为包名的东西。它允许您将包命名为@angular/core
,其中@angular
是包的范围
您可以像这样将作用域库添加到当前角度项目中
ng generate library @my-scope/my-library
从作用域项目导入时,必须以作用域作为前缀
比如,
从'@cool lib/common'导入{CommonService};
从'@cool lib/feature-a'导入{FeatAComponent,FeatAService};
从'@cool lib/feature-b'导入{FeatBModule};
在上面,名称@cool lib
是npm包的范围,common
是npm包的名称
使用作用域可以做两件基本的事情(据我所知)
@cool lib/animations
不会与@angular/animations
node_模块/@cool lib