我有两个单独的Angular 2应用,它们都使用完全相同的组件。这导致代码重复,我不喜欢。是否有人在某处托管公共组件并在这些消费者应用程序中远程加载它们?与CDN托管文件的想法相同。
答案 0 :(得分:2)
您可以在npm上发布您的组件。这不会远程加载它们,但你可以在你的应用程序中进行AOT编译,并且在大小和速度方面仍然有相当不错的结果。
您也可以将它们放入延迟加载的模块中,这样组件将在以后加载。
要将组件发布到npm,您需要执行以下操作:
export * from './src/mycomponent.component';
.ts
编译为.js
npm install --save-dev typescript
在package.json
prepublish
下创建一个scripts
脚本,以便在发布前编译您的组件
"scripts": {
"prepublish": "tsc"
}
创建tsconfig.json
{
"compilerOptions": {
"noImplicitAny": true,
"module": "commonjs",
"target": "ES5",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"sourceMap": true,
"declaration": true
},
"files": [
"mycomponent.component.ts"
],
"exclude": [
"node_modules"
]
}
将输入信息添加到package.json
"typings": "./mycomponent.component.d.ts",
使用
在npm上发布npm publish
在将文件发布到npm之前,这将运行Typescript编译器。
PS:您可能还想将以下行添加到.npmignore
文件中,因此只有类型会被发布,而不是来源。
# Ignored files
*.ts
!*.d.ts