我使用 Angular-CLI 创建了一个用于创建仪表板的通用框架,该框架由多个模块组成。
有些模块是完全独立的。使用该库的开发人员可以根据需要在其项目中添加模块。我在 Angular Js 1.0 中创建了该框架的先前版本,在此我以 javascript min 文件的形式提供。
要创建这个私有(private)库而不是公共(public)库,我需要注意哪些事项,或者有什么方法可以将我的模块单独打包并在不使用 NPM 的情况下交付?
最佳答案
这个问题归结为两个独立的任务:创建库包并在内部发布它。
创建库包
为了创建支持 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/asserts 复制到输出目录。
那里有几个详细的指南。例如Distributing an Angular Library - The Brief Guide
发布库包
发布私有(private)库有多种选项:
- 引用 git repository 中的分支注意:使用不同的存储库进行开发(没有编译器输出)和发布可能是个好主意
- npm 为 fee 提供私有(private)存储库
- 您可以设置本地注册表(例如 Artifactory 或 Sinopia )
关于node.js - 如何为 Angular 2+ 编写可重用的私有(private)库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45246569/