npm publish执行成功但npmjs仓库未更新,无法拉取新版本求助
这种情况我碰到过好几次,大概率是下面几个原因导致的,一个个排查应该能解决:
npm本地缓存同步延迟
有时候本地npm缓存会保留旧版本的信息,哪怕你已经成功发布了新版本。先清理本地缓存试试:npm cache clean --force之后可以用
npm view @superflycss/utilities-colors versions命令,查看远程仓库实际存在的版本列表,确认3.0.5是否真的已经推送成功。使用了非官方npm镜像源
如果你的npm配置了第三方镜像(比如国内镜像),可能存在镜像同步不及时甚至失败的情况。先检查当前使用的镜像源:npm config get registry如果返回的不是官方的
https://registry.npmjs.org/,可以临时切换到官方源重新发布:npm config set registry https://registry.npmjs.org/ npm publish发布完成后如果需要换回原来的镜像源,记得再改回去。
Scope包的发布权限或访问设置问题
你的包是带scope的(@superflycss/utilities-colors),这类包的发布有特殊要求:- 如果你是第一次发布这个scope下的包,或者没有该scope的发布权限,可能会出现“发布成功”的假象但实际未推送。可以用
npm owner ls @superflycss/utilities-colors查看你是否拥有该包的发布权限。 - 免费账号的scope包默认是私有,而私有包需要付费才能发布,此时发布会静默失败。试试加上
--access public参数重新发布:npm publish --access public
- 如果你是第一次发布这个scope下的包,或者没有该scope的发布权限,可能会出现“发布成功”的假象但实际未推送。可以用
本地package.json版本号未正确更新
发布时npm会读取本地package.json里的version字段,如果你没把这个字段改成3.0.5,那发布的还是旧版本。先打开项目根目录的package.json,确认version值确实是3.0.5。npm官网页面更新延迟
npm官网的包页面更新有时候会比实际包的发布慢几分钟,尤其是在服务器高峰时段。可以先等待10-15分钟,再刷新官网页面或者尝试安装新版本。发布命令执行目录错误
有没有可能你在非项目根目录下执行了npm publish?比如误操作进入了父目录或者其他文件夹,导致发布的是空内容或者旧版本的包。确认一下执行发布命令时,当前工作目录是不是utilities-colors的项目根目录。
内容的提问来源于stack exchange,提问作者Ole

