Я пытаюсь автоматизировать упаковку / выпуск / публикацию репозитория с открытым исходным кодом Node.js
У меня есть следующие сценарии
"scripts": {
"build": "babel src/ --out-dir lib/",
"clean": "rm -rf lib/",
"lint": "eslint . --cache --fix",
"preversion": "yarn run lint && yarn run test:once",
"postversion": "git push && git push --tags",
"prepublishOnly": "yarn run clean && yarn run build && yarn run release:preview && cli-confirm \"Do you really want to release a new version? Please check the files that will be publicly released first.\"",
"release:preview": "npm pack && tar -xvzf *.tgz && rm -rf package *.tgz",
"release": "yarn bump --prompt --commit --tag --push",
"test": "NODE_ENV=test jest --watch",
"test:once": "NODE_ENV=test jest",
"test:coverage": "NODE_ENV=test jest --coverage"
},
Когда я запускаю yarn release
, я получаюзапросить, и я выбираю версию для изменения (несовершеннолетнюю, исправление и т. д.), затем она фиксирует, помечает и отправляет в мой репозиторий github.С упаковкой / выпуском все в порядке.
Когда я запускаю npm publish
или yarn publish --non-interactive
(что должно быть то же самое, что я полагаю), я повторяю цикл дважды, в первый раз, когда он работает хорошо: My prepublishOnly
Сценарий вызывается, но выполняется в другой раз и завершается ошибкой, поскольку версия уже существует в NPM.
Я не понимаю, почему он повторяется дважды, prepublishOnly
должен вызываться только один раз, не так ли?Должно быть, я что-то делаю не так.
Вот полный журнал:
npm publish
> @unly/utils@1.0.0 prepublishOnly .
> yarn run clean && yarn run build && yarn run release:preview && cli-confirm "Do you really want to release a new version? Please check the files that will be publicly released first."
yarn run v1.13.0
$ rm -rf lib/
✨ Done in 0.10s.
yarn run v1.13.0
$ babel src/ --out-dir lib/
Successfully compiled 4 files with Babel.
✨ Done in 0.67s.
yarn run v1.13.0
$ npm pack && tar -xvzf *.tgz && rm -rf package *.tgz
npm notice
npm notice ? @unly/utils@1.0.0
npm notice === Tarball Contents ===
npm notice 1.7kB package.json
npm notice 1.1kB LICENSE
npm notice 592B README.md
npm notice 433B lib/browserRedirect.js
npm notice 857B lib/convertLineBreaks.js
npm notice 286B lib/index.js
npm notice 209B lib/isBrowser.js
npm notice === Tarball Details ===
npm notice name: @unly/utils
npm notice version: 1.0.0
npm notice filename: unly-utils-1.0.0.tgz
npm notice package size: 2.5 kB
npm notice unpacked size: 5.1 kB
npm notice shasum: 1ad46ff501a8f36ea2ceee85555219a6295c81c1
npm notice integrity: sha512-TmZKKvHjeA2K4[...]o/dALmKc0f2Yw==
npm notice total files: 7
npm notice
unly-utils-1.0.0.tgz
x package/package.json
x package/LICENSE
x package/README.md
x package/lib/browserRedirect.js
x package/lib/convertLineBreaks.js
x package/lib/index.js
x package/lib/isBrowser.js
✨ Done in 0.82s.
Do you really want to release a new version? Please check the files that will be publicly released first. y
npm notice
npm notice ? @unly/utils@1.0.0
npm notice === Tarball Contents ===
npm notice 1.7kB package.json
npm notice 1.1kB LICENSE
npm notice 592B README.md
npm notice 433B lib/browserRedirect.js
npm notice 857B lib/convertLineBreaks.js
npm notice 286B lib/index.js
npm notice 209B lib/isBrowser.js
npm notice === Tarball Details ===
npm notice name: @unly/utils
npm notice version: 1.0.0
npm notice package size: 2.5 kB
npm notice unpacked size: 5.1 kB
npm notice shasum: 1ad46ff501a8f36ea2ceee85555219a6295c81c1
npm notice integrity: sha512-TmZKKvHjeA2K4[...]o/dALmKc0f2Yw==
npm notice total files: 7
npm notice
> @unly/utils@1.0.0 publish .
> npm publish
> @unly/utils@1.0.0 prepublishOnly .
> yarn run clean && yarn run build && yarn run release:preview && cli-confirm "Do you really want to release a new version? Please check the files that will be publicly released first."
yarn run v1.13.0
$ rm -rf lib/
✨ Done in 0.10s.
yarn run v1.13.0
$ babel src/ --out-dir lib/
Successfully compiled 4 files with Babel.
✨ Done in 0.68s.
yarn run v1.13.0
$ npm pack && tar -xvzf *.tgz && rm -rf package *.tgz
npm notice
npm notice ? @unly/utils@1.0.0
npm notice === Tarball Contents ===
npm notice 1.7kB package.json
npm notice 1.1kB LICENSE
npm notice 592B README.md
npm notice 433B lib/browserRedirect.js
npm notice 857B lib/convertLineBreaks.js
npm notice 286B lib/index.js
npm notice 209B lib/isBrowser.js
npm notice === Tarball Details ===
npm notice name: @unly/utils
npm notice version: 1.0.0
npm notice filename: unly-utils-1.0.0.tgz
npm notice package size: 2.5 kB
npm notice unpacked size: 5.1 kB
npm notice shasum: 1ad46ff501a8f36ea2ceee85555219a6295c81c1
npm notice integrity: sha512-TmZKKvHjeA2K4[...]o/dALmKc0f2Yw==
npm notice total files: 7
npm notice
unly-utils-1.0.0.tgz
x package/package.json
x package/LICENSE
x package/README.md
x package/lib/browserRedirect.js
x package/lib/convertLineBreaks.js
x package/lib/index.js
x package/lib/isBrowser.js
✨ Done in 0.82s.
Do you really want to release a new version? Please check the files that will be publicly released first. y
npm notice
npm notice ? @unly/utils@1.0.0
npm notice === Tarball Contents ===
npm notice 1.7kB package.json
npm notice 1.1kB LICENSE
npm notice 592B README.md
npm notice 433B lib/browserRedirect.js
npm notice 857B lib/convertLineBreaks.js
npm notice 286B lib/index.js
npm notice 209B lib/isBrowser.js
npm notice === Tarball Details ===
npm notice name: @unly/utils
npm notice version: 1.0.0
npm notice package size: 2.5 kB
npm notice unpacked size: 5.1 kB
npm notice shasum: 1ad46ff501a8f36ea2ceee85555219a6295c81c1
npm notice integrity: sha512-TmZKKvHjeA2K4[...]o/dALmKc0f2Yw==
npm notice total files: 7
npm notice
npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! You cannot publish over the previously published versions: 1.0.0. : @unly/utils