I am trying to create a component library with which I can share with anyone through npm . I am building my lib component using webpack . When I try to install my lib component in the Angular 2 project module, the project module does not recognize the name of my lib component module.
In my application, I am doing this ...
import '@angular/core';
import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
//it says it does not recognize the module name, I installed it via npm i bt-module.
import {BarChartComponent} from "BTModule";
@NgModule({
imports: [
BrowserModule,
BTModule
],
declarations: [
AppComponent
],
bootstrap: [AppComponent]
})
export class App {
}
I have the following folder structure for my lib component ...
bt-module
|_______src
| |____barchart
| | |____barchart.component.ts
| | |____barchart.styles.scss
| |____bt.module.ts
| |____index.ts
|_______package.json
|_______tsconfig.json
|_______webpack.config.js
My barchart.component.ts looks like this:
import {Component, OnInit, ViewChild, ElementRef, Input} from "@angular/core";
import * as d3 from 'd3'
@Component({
selector: 'bar-chart',
styles: [
require('./barchart.styles').toString()
],
template: '<div #barchart class="chart box"></div>'
})
export class BarChartComponent implements OnInit {
@Input('data') data: Array<any>;
@ViewChild('barchart') barchart: ElementRef;
constructor() {
}
ngOnInit() {
}
}
My bt.module.ts looks like this:
import '@angular/core';
import {NgModule, ModuleWithProviders} from '@angular/core';
import {BarChartComponent} from "./barchart/barchart.component";
@NgModule({
declarations: [
BarChartComponent
],
exports: [
BarChartComponent
]
})
export class BTModule {
}
My index.ts looks like this:
export * from './barchart/barchart.component'
export * from './avs.module';
tsconfig.json :
{
"compilerOptions": {
"declaration": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"es6",
"es2015",
"dom"
],
"noImplicitAny": false,
"target": "es5",
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"mapRoot": "",
"outDir": "./release",
"skipLibCheck": true,
"suppressImplicitAnyIndexErrors": true,
"baseUrl": "",
"types": [
"node"
],
"typeRoots": [
"node_modules/@types"
]
},
"compileOnSave": true,
"exclude": [
"node_modules/*",
"**/*-aot.ts"
],
"angularCompilerOptions": {
"skipTemplateCodegen": true,
"debug": true
}
}
? ? ( angular), . , : http://www.dzurico.com/how-to-create-an-angular-library. AOT NON-AOT .