Angular、npm、nexus 和 CI 实践

Angular, npm, nexus, and CI practices

这篇 post 是对 npm 的见解,适合那些有 maven 背景的人。

Java/maven 世界中,您将源代码构建到 jar,然后将您的 jar 推送到 Nexus。 所有这些都是使用 maven.
完成的 最终,您的部署工具会从 Nexus 中的存储位置检索您的 jar,并将其交付到它所针对的任何环境。

现在我正在做一个 Angular 项目,很难把所有的部分放在一起。

我知道我可以将我的 Angular 项目发布到 Nexus 中的 npm 存储库。但是我在这里发布的是一个npm包,包括一个package.json文件。
我知道我可以将我的 Angular 项目构建到 /dist 文件夹,并将该文件夹交付到环境。

但现在,我不明白这一切是怎么回事:以我的 maven 背景,我希望使用 npm 推送 /dist 的内容到 Nexus!

我在这里错过了什么?这个领域有哪些好的做法?

经过一番研究,我对这个问题的理解是:

使用 ng build 编译后,您的 Angular 项目不再是 npm 项目,而是静态网站。
您可能不再像使用 maven.

那样使用 npm 管理(在这种情况下:"deploy" 到 Nexus)您的项目

因此(引用 jonrsharpe 的评论)您可以压缩 ng build 生成的 /dist 文件夹的内容以分发它。

此时,如果你想将它推送到Nexus 仓库,你可以使用maven deploy plugin。但随后您的网站将被推送到 Maven 存储库。

底线:这完全取决于您需要做什么。

希望对您有所帮助。

在 angular 应用程序中使用 npm publish 总是可行的 而无需 使用 maven 部署插件。你应该先 运行 ng build 然后复制 package.json 到 dist 文件夹。您可以创建结合 ng buildcp[= 的特定构建脚本30=] 命令 package.json 到 dist 文件夹。

问题:您还应该像这样在 package.json 中提供 publishConfig :

“发布配置”:{ “注册表”:“https:///your-nexus-url/repository/npm-registry/” }

最后,您应该将 npm 令牌添加到 .npmrc 文件。

我已经将它集成到一个带有 Jenkins 和 Nexus 的产品项目中,希望它能有所帮助。