我们正在使用离线Jenkins进行构建。这意味着我们必须将所有依赖项存储在本地Nexus中。这与maven依赖关系没什么大不了的,但是事实证明,npm软件包上传存在问题。
有500多个npm依赖性,包括传递性依赖性。我制作了一个bash脚本,该脚本迭代项目的node_modules文件夹,并为其中的每个 package.json 调用npm publish --registry=nexus
。我在尝试发布第三方软件包时遇到了很多问题,例如标记为私有或包含不需要的发布挂钩的软件包。
我对脚本进行了调整,以在发布前从 package.json 中删除不需要的属性,现在成功上传了99%的软件包。但是,对于一些不包含必填 name 和 version 字段的 package.json 文件,我仍然会遇到一些错误。这怎么可能?如何解决?此外,发布过程需要30分钟以上。 Npm并不是为没有互联网而设计的,因此很难将这些第三方依赖项上传到Nexus。有没有比npm publish
和肮脏的元数据修复更好的方法了?
或者在这种情况下,仅对项目中的 node_modules 进行版本控制会更明智吗?