У меня есть код, написанный на машинописном языке angular2, это экспортируемый модуль с сервисами и компонентами.
@NgModule({
declarations:[
...DECLARATIONS
],
imports: [
CommonModule,
ChartModule
],
exports:[
...DECLARATIONS,
CommonModule,
ChartModule
],
providers:[
AlertErrorHandleService
, AuthenticationModelService
, AuthConnectionBackend
],
schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
})
export class MyModule {
static forRoot():ModuleWithProviders {
return {
ngModule: StmsModule,
providers: [AlertErrorHandleService
, AuthenticationModelService
, AuthConnectionBackend
]
};
}
}
Я хочу использовать этот MyModule в разных приложениях angular2, поэтому я опубликовал его с этим tsconfig и скриптами.
{
"compilerOptions": {
"emitDecoratorMetadata": true,
"removeComments": true,
"module": "es2015",
"target": "es5",
"moduleResolution": "node",
"sourceMap": true,
"declaration": true,
"noImplicitAny": false,
"experimentalDecorators": true,
"lib": ["dom", "es2015"],
"outDir": "dist",
"types": [
"node"
]
},
"exclude": [
"node_modules",
"dist",
"scripts"
],
"angularCompilerOptions": {
"genDir": "aot"
}
}
пакеты.json
"name": "my-lib",
"version": "0.2.1",
"description": "Shared lib angular2",
"main": "index.js",
"typings": "index.d.ts",
"scripts": {
"ngc": "ngc",
"lint": "tslint src/**/*.ts",
"copyPackage":"node ./scripts/copy-package",
"build": "rimraf -rf aot dist && npm run ngc && npm run copyPackage",
"publishPackage": "npm run build && cd dist && npm publish"
},
"keywords": [
"angular",
"angular2"
],
"author": "Haddar Macdasi",
"license": "MIT",
"dependencies": {
"@angular/core": "2.1.1",
"@angular/common": "2.1.1",
"@angular/compiler": "2.1.1",
"@angular/compiler-cli": "2.1.1",
"@angular/http":"2.1.1",
"@angular/platform-browser": "2.1.1",
"rxjs": "5.0.0-beta.12",
"angular2-highcharts": "0.4.1",
"highcharts": "5.0.2"
},
"devDependencies": {
"@types/chai": "^3.4.34",
"@types/node": "^6.0.41",
"typescript": "^2.0.3"
}
в другом приложении angular2, которое было создано с использованием семени из семя angular2, я установил пакет, пытаясь чтобы использовать все это работает, так как я запускаю приложение не в AOT, а в AoT, оно имеет ошибку
Ошибка: Неожиданное значение «MyModule», импортированное модулем «AboutModule».
У меня есть пара вопросов:
- как мне опубликовать пакет/в чем отличия внутри tsconfig "module" = es2015/systemjs/commonjs
- Имеет ли тип публикации модуля какое-либо отношение к тому, как пакет можно использовать внутри angular2, то есть, если я использую публикацию systemjs, могу ли я использовать этот пакет в приложении angular2 AoT?
- Есть ли какая-либо передовая практика, как опубликовать общий модуль angular2 и использовать его в приложениях diff?