这是一个概念性问题。
我是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。
我真的很感激一些指导。 提前谢谢!
答案 0 :(得分:2)
您可以使用ng-packagr
将您的库透明化为Angular Package Format
执行npm install ng-packagr --save-dev