Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 操作:角度库划分为独立的要素子库_Javascript_Angular_Typescript_Angular Library_Ng Packagr - Fatal编程技术网

Javascript 操作:角度库划分为独立的要素子库

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 v8.1.0),想知道如何将它“拆分到不同的子库中”

例如,角度(
@Angular
)以某种方式分为不同的“部分”,如:

  • @angular/common
  • @angular/core
  • @angular/forms
  • 等等
例如,
@angular/common
有不同的子目录可从中导入:

  • @angular/common/http
  • @angular/common/locale
  • @angular/common/testing
我想知道如何在我自己的Angular库中进行这种构造,以使不同的上下文元素彼此独立。假设我的库名为
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