Lerna 404 при публикации в частный реестр пакетов github

Я пытаюсь создать несколько рабочих пространств монорепозитория и опубликовать их в пакетах github нашей организации.

Я установил свой publishConfig для каждого пакета, чтобы он указывал на владельца следующим образом:

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

И затем убедился, что я вошел в npm через npm login, используя свой личный токен доступа в качестве пароля.

Затем я отправляю свои изменения, затем запускаю 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"
}

packages.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"
  }
}

Индивидуальные пакеты package.json

{
  "name": "@elementsoftworks/ui",
  "repository": {
    "url": "ssh://[email protected]: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/"
  }
}


person Joe Methven    schedule 29.05.2020    source источник


Ответы (2)


Это означает, что вы не использовали токен личного доступа, когда пытались войти в 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 TOKEN

person jens    schedule 13.11.2020

В моем случае я использовал CI, где у меня не было доступа к интерактивному входу в систему или тому подобному. Старые пакеты были обновлены правильно, но новые пакеты дали мне 404, поэтому я подумал, что это будет что-то связано с самим пакетом, и так оно и было.

Мне не хватало двух полей в package.json, repository и publishConfig пакета.

Добавление этих двух полей, как показано ниже, отлично сработало. (обратите внимание на развернутую форму repository)

"repository": {
  "type": "git",
  "url": "ssh://[email protected]/__user__/__repo-name__.git",
  "directory": "packages/__new-package-name__"
},
"publishConfig": {
  "registry": "https://npm.pkg.github.com/"
}
person Renato Rodrigues    schedule 16.06.2021