如何为Angular 2+编写可重用的私有库

我已经创build了一个通用的框架来创build仪表板,它由多个使用Angular-CLI的模块组成。

有些模块是完全独立的。 使用这个库的开发人员可以根据需要在他们的项目中添加模块。 我有一个在Angular Js 1.0中创build的这个框架的早期版本,在这个我已经作为JavaScript分钟文件交付。

有什么东西我必须注意创build这个图书馆作为私人而不是公开的,或者有什么办法将我的模块打包成单独的,并没有NPM交付?

这个问题归结为两个独立的任务:创build库包并在内部发布。

创build库包

为了创build一个支持AOT的库,你需要使用ngc -p src/tsconfig-aot.json进行编译。

tsconfig-aot.json是tsconfig.json的一个副本,附带一节:

  "files": [ "./app/index.ts" ], "angularCompilerOptions": { "annotateForClosureCompiler": true, "genDir": "../dist/out-lib-tsc", "skipMetadataEmit" : false, "skipTemplateCodegen": true, "strictMetadataEmit": true, "flatModuleOutFile": "libname.js", "flatModuleId": "libname" } 

我需要通过将文件从src / app移动到输出目录的根目录来修复目录结构。 然后你复制src / app和src /断言到输出目录。

那里有几个详细的指南。 例如分发一个angular库 – 简要指南

发布库包

有几个选项可以发布私人图书馆:

  • 在git仓库中引用分支注意:使用不同的仓库来开发(不带编译器输出)和发布
  • npm提供收费的私人存储库
  • 您可以设置本地registry(例如Artifactory或Sinopia )