更新 npm 包的自述文件时出现版本问题?
Posted
技术标签:
【中文标题】更新 npm 包的自述文件时出现版本问题?【英文标题】:version bump when updating readme for npm package? 【发布时间】:2012-10-29 11:21:22 【问题描述】:如果我为我维护的一个 npm 包修改了我的自述文件,我是否需要在 package.json 中修改版本并进行另一个 npm 发布?还是有其他方法可以在没有版本冲突的情况下更新自述文件。
【问题讨论】:
【参考方案1】:根据您对“需要”的定义,这可能是两个截然不同的问题:
[是否可以发布自述文件更改而不影响版本号?]
[技术上是否可以在不增加版本的情况下发布更改]
接受的答案(通过 npm publish --force
更新,即不增加版本号的任何部分)是 Q2 的一个很好的答案。但我想谈谈 Q1。
不鼓励使用npm publish --force
。相反,我们鼓励作者使用semantic versioning aka semver,它规定:
... X.Y.Z (Major.Minor.Patch) 的版本格式。错误修复不 影响 API 增加补丁版本,向后兼容 API 添加/更改会增加次要版本,并向后 不兼容的 API 更改会增加主要版本。
所以我的答案是: 虽然从技术上讲有一种方法可以在不增加版本的情况下发布更改,但您不应该这样做。对于不影响包 API 的小修改,您应该提升“补丁”版本,例如从 1.2.0 到 1.2.1。
【讨论】:
好吧,我就是这么想的。我应该对自述文件进行一些小改动。 force 现已弃用 修复拼写错误或向 README.md(或文档)添加信息不应引起补丁冲突。没有任何代码被改变,只是文档。并且问题仍然存在于该特定版本中。当然,您可以弃用该软件包,但这似乎是一种糟糕的方式。由于 publish --force 现在已被弃用,我想唯一的方法是实际打补丁。 作为对此事的看法,我认为 NPM 应该允许对 README.md 进行更改,而不需要补丁。 README.md 是一个特例文件,因为 NPM 有义务在网站上呈现它以用于文档目的。因此,它可以被视为“元”,就像包中没有其他文件一样。【参考方案2】:如果注册表中已经存在版本号,npm publish --force
将覆盖。
https://npmjs.org/doc/publish.html
【讨论】:
【参考方案3】:对于那些来到这里并认为他们做得对的人。是的,你做对了;在 5-10 分钟内检查您的 npm
页面。
【讨论】:
【参考方案4】:你能做的最好的事情是:
发布新的次要版本:
npm publish [@<scope>/]<name>[@<your new minor version>]
详细讨论请看这里:http://blog.npmjs.org/post/77758351673/no-more-npm-publish-f
不鼓励(!)以下内容,不应该是您的首选
执行此操作时要小心,在取消发布包后,它不会让您重新发布它,直到 24 小时过去。
您可以取消发布包,将该版本留空(但请在执行此操作之前了解其含义):npm unpublish [@<scope>/]<name>[@<version>]
注意:--force
参数已弃用。
【讨论】:
如果不清楚,unpublish 的 npm 文档指出“即使未发布包版本,也永远不能重用该特定名称和版本组合。为了发布再次打包,必须使用新的版本号。”。这实质上意味着取消发布和重新发布不是在没有补丁补丁的情况下更新文档的解决方法。 在执行此操作时要小心,在您取消发布一个包后,它不会让您重新发布它,直到 24 小时过去。以上是关于更新 npm 包的自述文件时出现版本问题?的主要内容,如果未能解决你的问题,请参考以下文章
npm install 时出现 Unexpected end of JSON input while parsing near···
为 vue-cli 运行“npm run dev”时出现跨环境问题
尝试通过 Composer 将 Laravel/Nova 更新到最新版本时出现 INVALID CREDENTIALS 错误