[为Angular Library发布npm

问题描述 投票:1回答:2

我有一个带有lib,tester和e2e项目的'ng库'。当我运行“ ng build”时,它将所有3个项目打包在“ dist”下。我只需要发布lib项目。我知道从'cd'到'dist / lib'和'npm publish'都可以,但是我没有这个选项,因为我们的CI生成仅在项目根目录中执行'npm publish'。因此,我的问题是仅针对lib项目,如何从根实现发布?

angular npm package publish
2个回答
1
投票

您有两个选择,但是两个都需要更改CI脚本:

选项1:

$ npm publish <path-to-lib-folder>

选项2:

$ cd <path-to-lib-folder>
$ npm publish

0
投票

使我的同伴们高兴!最后,经过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转换为peerDependenciesdevDependencies。同样,根Angular项目angular.json必须更新以删除tester项目。我在angular.json项目中创建了另一个tester,使其本身成为Angular应用程序,与library项目分离-该项目未发布。

有了所有这些更改,我终于可以从项目的根目录运行npm publish并仅发布dist/your-library-project。这对我来说非常重要,因为CI服务器的“发布”步骤只能从项目根目录执行npm publish。通过这些更改,我甚至可以从项目根目录仅发布library模块。当然,这只是一种解决方法/破解,但我很高兴至少可以完成。快乐的日子!


0
投票

这里有一个示例,您如何创建和发布角形材料表作为库。代码源可在github链接中找到:https://medium.com/javascript-in-plain-english/angular-material-table-with-edit-function-like-excel-7c2c53332553?source=friends_link&sk=8a53cf64b55410b2534e4d4f861b74a9

© www.soinside.com 2019 - 2024. All rights reserved.