从Angular 4中的其他包导入模块

时间:2018-03-01 17:28:06

标签: angular typescript npm dependencies

这是一个概念性问题。

我是Angular和npm的绝对初学者,所以这肯定是一个基本问题,但我一直在寻找并且找不到答案。

我想在开始一个项目之前做一些概念验证。 我希望有一个名为Imported的软件包,并在名为Importer

的软件包中重用它

导入程序的package.json已作为依赖项导入:

"dependencies": {
    ...
    "imported": "file:../Imported",
    ...
}

导入的是在Importer的node_modules文件夹中,如预期的那样。

我跟着Angular's documentation on reusing modules。他们描述的例子正是我想要的,只是我想从依赖内部做到这一点。

所以我在Importer的app.module.ts中导入了ImportedAppModule。

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';


import { AppComponent } from './app.component';
import { ImportedAppModule } from 'imported/src/app/app.module';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule, 
    ImportedAppModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

我还在导入的app.module.ts中导出了该组件:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';


import { ImportedAppComponent } from './app.component';


@NgModule({
  declarations: [
    ImportedAppComponent
  ],
  imports: [
    BrowserModule
  ],
  exports: [
    ImportedAppComponent
  ],
  providers: [],
  bootstrap: [ImportedAppComponent]
})
export class ImportedAppModule { }

使用此设置,我收到以下错误:

  

错误在../imported/src/app/app.module.ts模块构建失败:错误:   TypeScript中缺少\ imported \ src \ app \ app.module.ts   汇编。请通过“'文件”确保它在您的tsconfig中。   或者包括'属性。

所以我似乎必须在tsconfig.app.json中包含这个依赖项。但是我也读过一些我不必将其包含在那里的内容,而且我必须将它包含在Importer的bootstrap数组中。 我试过了两个,没有一个工作,但没关系,配置细节超出了这个问题的范围。

我的问题是,它是哪一个? 通常的做法是什么?我在这里走在正确的轨道上吗?如果是,那么下一步是什么?

我尝试在Imported包中使用ng build --aot,并将依赖项添加到Importer中的dist文件夹,但它失败并说它没有package.json,所以我想我可能只是试着去做jit。不过,我想知道如何使用aot。

我真的很感激一些指导。 提前谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用ng-packagr将您的库透明化为Angular Package Format
执行npm install ng-packagr --save-dev

请参阅此https://docs.python.org/2/tutorial/controlflow.html