您如何作为组织将私有npm软件包发布并安装到GitHub软件包中?

时间:2020-08-19 21:33:19

标签: npm google-cloud-functions lerna monorepo github-package-registry

我们有一个带有共享软件包“ @ myorganization / common”的monorepo,供应用程序和Google云功能使用。

Google云功能要求将程序包发布到仓库才能使用,因为我们不发布编译后的代码,该代码可以包括本地程序包,但可以直接包含原始TypeScript。

我找到了服务器教程,但没有结合私有软件包和组织的用例。

我进入packages / common目录。

我在packages.json中添加了以下几行:

"publishConfig": { "registry": "https://npm.pkg.github.com/" },
"repository": {
  "url": "git@github.myorganization/common.git"
},

我在GitHub上创建了具有完整存储库,软件包和组织权限的个人Auth令牌。

然后我登录到我的组织:

npm login --registry=https://npm.pkg.github.com --scope=@myorganization

然后我点击了

npm publish

我收到以下错误:

npm ERR! code EPRIVATE
npm ERR! This package has been marked as private
npm ERR! Remove the 'private' field from the package.json to publish it.

我希望此程序包仅可由组织成员使用。当被React Native使用时,它既应被用作lerna monorepo内的本地私有包,又应被Google Cloud Function通过从GitHub包中获取而被Google Cloud Function使用。但是没有其他人可以访问它。

有可能吗?

致谢

编辑:

我尝试更新packages.json,删除private = true并尝试确保将其发布到我的私人组织:

"publishConfig": {
    "registry": "https://npm.pkg.github.com/:_authToken=xxxx --scope=@myorganization"
  },

我现在收到错误:

npm ERR! code E404
npm ERR! 404 Not Found - PUT https://npm.pkg.github.com/@myorganization%2fcommon - The expected resource was not found.
npm ERR! 404
npm ERR! 404  '@myorganization/common@0.0.7' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)

1 个答案:

答案 0 :(得分:1)

我正面临着完全相同的问题。这是对我有用的东西。

我必须在GitHub上创建那个组织(即您示例中的myorganization),并在该仓库下创建一个与仓库相同名称的仓库(即您示例中的common)组织,并且有效。