, - "karma-jasmine-html-reporter": "^1.4.0", + "karma-jasmine-html-reporter": "^1.4.2", - "ng-packagr ": "^5.4.0", + "ng-packagr": "^9.0.0", - "protractor": "~5.4.0", + "protractor": "~5.4.3", -
Angular官方在库设计文档里说得很明确,库的公开能力要通过单一导入路径暴露给使用者,而public-api.ts就是维护这层公开API的地方;ng-packagr也把入口文件定义为公共API的起点, (Angular)还要补充一个背景:你写的是public_api.ts,这在一些旧的ng-packagr文档和老项目里确实常见;Angular当前官方文档更常写成public-api.ts。 (Angular)二、public_api.ts的职责,不是完整暴露源码,而是划定公开边界ng-packagr的说明非常直接:入口文件是库公共APIsurface的起点,所有从入口文件导出的符号,都可以被库使用者访问 ng-packagr说得很清楚,没有从入口文件导出的符号应被当作内部;AngularPackageFormat也强调,入口点可以把不同能力分组,以减少API被误用的概率。 ng-packagr对未导出符号视为内部实现的界定,正好为这种判断提供了依据。
prefix=sf 这里我们快速总结一下 ng generate library 命令执行的操作: 在 angular.json 文件中添加 sf-lib 项目; 在 package.json 文件中添加 ng-packagr
karma-jasmine": "~1.1.2", "karma-jasmine-html-reporter": "^0.2.2", "lint-staged": "8.1.0", "ng-packagr