github - 发布Monthrepo的Github软件包作为组织的一部分

标签 github monorepo github-package-registry

我在Github Enterprise上有一个Lerna monorepo,目前有两个npm软件包,我正尝试将它们发布到同一仓库下的Github软件包注册表中。

作为引用,它们是:

  • github.com/mycompany/package-a
  • github.com/mycompany/package-b

  • 我遵循以下指示:https://help.github.com/en/github/managing-packages-with-github-packages/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository

    因此,现在我的2个package.json文件如下所示(出于格式化目的而进行了修剪):
    "name": "@mycompany/package-a",
    "repository": {
        "url": "ssh://git@github.com:mycompany/monorepo.git"
      },
      "publishConfig": {
        "registry": "https://npm.pkg.github.com/"
      },
    
    "name": "@mycompany/package-b",
    "repository": {
        "url": "ssh://git@github.com:mycompany/monorepo.git"
      },
      "publishConfig": {
        "registry": "https://npm.pkg.github.com/"
      },
    

    因此,您会注意到,它们两者都具有与建议的存储库相同的URL。

    第一个问题:一个问题是我公司已经有名为package-apackage-b的存储库。看来您不可能与monorepo中的软件包和monorepo外部的软件包发生命名冲突。¹

    第二个也是更重要的问题:这似乎根本不适合我。我在各自的package.json文件中重命名了该包,以避免我实际上不想做的package-a-monopackage-b-mono的命名冲突,但我只是想使其正常工作。当尝试在存储库本身中运行lerna publishnpm publish时,我得到404。就像它实际上并没有试图读取repository.url字段那样,因为它告诉您进行修改。

    ^事实证明这只是暂时的,或者根本不是一个问题,这仅仅是因为命名冲突。

    npm发布输出:
    npm ERR! code E404
    npm ERR! 404 Not Found - PUT https://npm.pkg.github.com/@mycompany%2fpackage-a - The expected resource was not found.
    

    lerna发布输出:
    lerna http fetch PUT 404 https://npm.pkg.github.com/mycompany/@mycompany%2fpackage-a 327ms
    lerna ERR! E404 The expected resource was not found.
    

    有没有人遇到这个问题并找到解决方案?

    ¹更糟糕的是,由于某种原因,我第一次运行此程序时,实际上确实将一个软件包发布到了package-a的monorepo中。但是从那以后,我得到了错误lerna ERR! E422 Package "package-a" is already associated with another repository.,什么都没有改变,所以我无法将另一个版本发布到相同的仓库中。

    最佳答案

    导致此错误的另一个可能原因(在原始问题正文中进行了讨论和排除)是,如果任何软件包的package.json的存储库字段与存储库的git URL不匹配-例如,如果您将存储库转移到另一个组织,或者重命名了仓库,但没有使用新的URL更新每个软件包的package.json

    即使问题出在存储库URL上,该错误消息也将在https://npm.pkg.github.com/@org/package-name上报告404。

    (贷给jonas-reif's comment)

    关于github - 发布Monthrepo的Github软件包作为组织的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59618719/

    相关文章:

    github - 我可以设置 Github 存储库来自动批准和合并来自特定用户的 PRs 吗?

    git - 如何在不使用子模块的情况下在我的存储库中添加/升级​​/降级远程 Git 项目?

    javascript - 观察使用 webpack 构建的 npm 链接包的变化

    maven - 使用 Gradle 访问私有(private) Maven Github 包注册表

    java - 如何将 maven 插件上传到 Github 包?

    c++ - 处理 Github 存储库中的外部 C/C++ 代码库

    git - Docker镜像git clone错误 “fatal: Not a git repository”

    javascript - Bazel Typescript - 找不到 ts_library 由 module_name 引用

    javascript - 如何通过修改.npmrc文件在Travis上运行lerna发布?

    node.js - 无法登录到 GitHub 包注册表