Lerna 404 发布到 github 包私有注册表时



我正在尝试构建一些monorepo工作区并将它们发布到我们组织的github包中。

我已经在每个包上设置了我的 publishConfig 以指向所有者,如下所示:

"publishConfig": {
"registry": "https://npm.pkg.github.com/"
},

然后确保我使用我的个人访问令牌作为密码通过npm login登录到 npm。

然后我推送我的更改,然后为我的包运行 lerna publish 以转到我组织的私有注册表上的 github 包,但是最后我得到了一个非常模糊的 404:

lerna info Looking for changed packages since v0.0.5
? Select a new version (currently 0.0.5) Patch (0.0.6)
Changes:
- @elementsoftworks/ui: 0.0.0 => 0.0.6
? Are you sure you want to publish these packages? Yes
lerna info execute Skipping releases
lerna info git Pushing tags...
lerna info publish Publishing packages to npm...
lerna info Verifying npm credentials
lerna http fetch GET 200 https://registry.npmjs.org/-/npm/v1/user 565ms
lerna http fetch GET 200 https://registry.npmjs.org/-/org/joemethven/package?format=cli 295ms
lerna WARN The logged-in user does not have any previously-published packages, skipping permission checks...
lerna info Checking two-factor auth mode
lerna http fetch GET 200 https://registry.npmjs.org/-/npm/v1/user 235ms
lerna http fetch PUT 404 https://npm.pkg.github.com/@elementsoftworks%2fui 590ms
lerna ERR! E404 The expected resource was not found.
josephmethven@Josephs-MBP @element-softworks-ui % 

谁能告诉我在这个过程中我做错了什么?

lerna.json

{
"packages": [
"packages/*"
],
"npmClient": "yarn",
"useWorkspaces": true,
"version": "0.0.3"
}

包.json

{
"name": "element-softworks-ui",
"private": true,
"version": "0.0.0",
"main": "index.js",
"license": "MIT",
"workspaces": [
"packages/*"
],
"devDependencies": {
"@babel/plugin-proposal-throw-expressions": "^7.10.1",
"lerna": "^3.22.0"
},
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^1.2.28",
"@fortawesome/react-fontawesome": "^0.1.9",
"@popperjs/core": "^2.4.0",
"@reach/router": "^1.3.3",
"axios": "^0.19.2",
"formik": "^2.1.4",
"gatsby": "^2.22.12",
"gatsby-link": "^2.4.3",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-popper": "^2.2.3",
"yup": "^0.29.1"
},
"scripts": {
"bootstrap": "lerna bootstrap --use-workspaces"
}
}

单个包包.json

{
"name": "@elementsoftworks/ui",
"repository": {
"url": "ssh://git@github.com:elementsoftworks/element-softworks-ui.git"
},
"module": "index.js",
"version": "0.0.6",
"main": "index.js",
"license": "MIT",
"dependencies": {
"gatsby": "^2.22.12",
"gatsby-link": "^2.4.3",
"react": "^16.13.1",
"react-dom": "^16.13.1"
},
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
}
}

就我而言,我使用的是无法访问交互式登录或类似内容的 CI。旧软件包更新正确,但新软件包给了我 404,所以我认为这与软件包本身有关,确实如此。

我在包的package.json上缺少两个字段,repositorypublishConfig

添加这两个字段,如下所示,效果很好。(注意repository的扩展形式(

"repository": {
"type": "git",
"url": "ssh://git@github.com/__user__/__repo-name__.git",
"directory": "packages/__new-package-name__"
},
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
}

这表示您在尝试登录 npm 时未使用个人访问令牌。

lerna info Checking two-factor auth mode

您必须使用

登录
$npm login....
username=<username>
password<your PAT token>
email=<email>

您可以使用内容创建.npmrc

//npm.pkg.github.com/:_authToken=<YOURTOKEN>

创建 PAT 令牌的文档

最新更新