我有一个带有lib,tester和e2e项目的'ng库'。当我运行“ ng build”时,它将所有3个项目打包在“ dist”下。我只需要发布lib项目。我知道从'cd'到'dist / lib'和'npm publish'都可以,但是我没有这个选项,因为我们的CI生成仅在项目根目录中执行'npm publish'。因此,我的问题是仅针对lib项目,如何从根实现发布?
您有两个选择,但是两个都需要更改CI脚本:
选项1:
$ npm publish <path-to-lib-folder>
选项2:
$ cd <path-to-lib-folder>
$ npm publish
使我的同伴们高兴!最后,经过5天的研究,我们有了解决方案!这仍然是一个``解决方法'',因为目前尚没有明确的方式来支持当前的``npm''版本(截至2019年2月)通过package.json定义``默认''发布目录-这将是理想且更简单的方法。所以这里去-
解决方案>>
为ng build
根项目运行ng library
。这将生成包含dist
项目和library
项目的tester
文件夹。打开dist/your-library-project/package.json
-这是ng-packager
根据您的库的package.json生成的package.json。
将自动生成的属性从dist/your-library-project/package.json
复制到根/package.json
"main": "bundles/your-library-project.umd.js", "module": "fesm5/your-library-project.js", "es2015": "fesm2015/your-library-project.js", "esm5": "esm5/your-library-project.js", "esm2015": "esm2015/your-library-project.js", "fesm5": "fesm5/your-library-project.js", "fesm2015": "fesm2015/your-library-project.js", "typings": "your-library-project.d.ts", "metadata": "your-library-project.metadata.json", "sideEffects": false, "dependencies": { "tslib": "^1.9.0" }
将所有路径更改为相对于根
package.json
。所以
“ main”:“ bundles / your-library-project.umd.js”,
成为
“ main”:“ dist / your-library-project / bundles / your-library-project.umd.js”,
这从本质上告诉
npm
,当它将您的库模块导入另一个应用程序时,入口点位于dist/your-library-project/bundles/your-library-project.umd.js
-允许网络应用程序通过以下方式导入该模块:
import {YourLibraryModule} from 'your-library';
此外,根据根
package.json
中还有哪些其他属性,可能需要进一步修复。例如。我必须摆脱dependencies
项目未直接使用的所有library
。另外,根据用途将库的dependencies
转换为peerDependencies
或devDependencies
。同样,根Angular项目angular.json
必须更新以删除tester
项目。我在angular.json
项目中创建了另一个tester
,使其本身成为Angular应用程序,与library
项目分离-该项目未发布。
有了所有这些更改,我终于可以从项目的根目录运行npm publish
并仅发布dist/your-library-project
。这对我来说非常重要,因为CI服务器的“发布”步骤只能从项目根目录执行npm publish
。通过这些更改,我甚至可以从项目根目录仅发布library
模块。当然,这只是一种解决方法/破解,但我很高兴至少可以完成。快乐的日子!
这里有一个示例,您如何创建和发布角形材料表作为库。代码源可在github链接中找到:https://medium.com/javascript-in-plain-english/angular-material-table-with-edit-function-like-excel-7c2c53332553?source=friends_link&sk=8a53cf64b55410b2534e4d4f861b74a9