我正在尝试使用
lerna publish
发布我的包,如下所示:
lerna publish prerelease --preid daily --yes --force-publish --registry <registry_url>
我已将此步骤插入到我的 Jenkins 构建管道中,如下所示:
stage("setup enviornment") {
steps {
echo "\n[ ENV SET UP ]\n"
... Authentication Steps
}
}
stage("install packages") {
steps {
echo "\n[ INSTALLING PACKAGES ]\n"
sh "yarn install"
}
}
stage("build packages") {
steps {
echo "\n[ BUILDING PACKAGES ]\n"
sh "yarn build"
}
}
stage("Publish packages") {
steps {
echo "\n[ PUBLISHING PACKAGES ]\n"
sh "yarn daily-deploy"
}
}
脚本
daily-deploy
包含如上所述的lerna命令。
但是,在发布包(私有仓库)的最后一步中,我收到以下错误:
lerna info auto-confirmed
lerna info execute Skipping releases
lerna info git Pushing tags...
lerna info publish Publishing packages to npm...
lerna notice Skipping all user and access validation due to third-party registry
lerna notice Make sure you're authenticated properly ¯\_(ツ)_/¯
lerna WARN ENOLICENSE Package <package name> is missing a license.
lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository.
lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance.
lerna ERR! ZlibError: zlib: invalid block type
lerna ERR! at Unzip.ZlibBase.(anonymous function).on.er (/apps/agent/workspace/<project>-prerelease/node_modules/minizlib/index.js:73:52)
lerna ERR! at Unzip.emit (events.js:203:15)
lerna ERR! at Zlib.zlibOnError [as onerror] (zlib.js:165:8)
lerna ERR! at processChunkSync (zlib.js:403:12)
lerna ERR! at Unzip.ZlibBase._processChunk (zlib.js:378:12)
lerna ERR! at Unzip.write (/apps/agent/workspace/<project>-prerelease/node_modules/minizlib/index.js:140:30)
lerna ERR! at Object.write (/apps/agent/workspace/<project>-prerelease/node_modules/tar/lib/parse.js:305:58)
lerna ERR! at Yallist.pipes.forEach.p (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/minipass/index.js:374:18)
lerna ERR! at Yallist.forEach (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/yallist/yallist.js:156:8)
lerna ERR! at ReadStream.emit (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/minipass/index.js:373:20)
lerna ERR! at ReadStream.emit (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/fs-minipass/index.js:154:22)
lerna ERR! at ReadStream.write (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/minipass/index.js:163:17)
lerna ERR! at ReadStream.[_handleChunk] (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/fs-minipass/index.js:131:19)
lerna ERR! at ReadStream.[_onread] (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/fs-minipass/index.js:109:32)
lerna ERR! at fs.read (/apps/agent/workspace/<project>-prerelease/node_modules/tar/node_modules/fs-minipass/index.js:101:22)
lerna ERR! lerna zlib: invalid block type
error Command failed with exit code 1.
除了一个以外,我所有的私人包裹都有。
我的lerna.json如下:
{
"packages": [
"packages/*"
],
"version": "independent",
"command": {
"publish": {
"registry": <repository_url>
}
},
"npmClient": "yarn",
"useWorkspaces": true
}
有人可以帮我解决这个问题吗?
对我来说,我从
v1.1.0 -> v1.2.0
发布失败,因为进程提前退出,并且我被这个 zlib 错误消息困住了。
我尝试重新运行lerna发布并分别调用
lerna version
:
# Optional: Remove the broken version
git reset --hard HEAD^ # Remove the last commit in local
git tag -d v1.2.0 # Delete tag in local
git push origin +master # Push updates to remote/origin
git push --delete origin v.1.2.0 # Delete tag in remote
# Retry publish
lerna version --force-publish # This will create a commit, a tag, and push to git behind the scene
git fetch origin master
lerna publish from-git
有趣的是,当我尝试使用相同的号码时,我总是失败:
v1.1.0 -> v1.2.0(失败)
v1.1.0 -> v1.1.1(成功) -> v1.2.0(失败)
v1.1.0 -> v1.1.1 -> v1.2.1(成功)
所以,我只是接受事实并跳过该数字。
P.S.:
lerna version
与lerna publish
、--force-publish
、from-git
之间的区别:https://lerna.js.org/docs/features/version-and-publish#synchronized-versions
另一个也值得尝试的流行答案:
https://github.com/lerna/lerna/issues/2278#issuecomment-652538695
... 您可以做的另一件事是将 git Push 推迟到成功之后 发布:
npx lerna version --no-push --yes npx lerna publish from-git --yes # See https://github.com/lerna/lerna/blob/ea6ec639560ce71d9df8cbd7eef2d416e71f5442/commands/version/lib/git-push.js#L11 git push --follow-tags --no-verify origin master