![](/img/trans.png)
[英]npm publish error - "npm ERR! 403 403 Forbidden - package version that is forbidden"
[英]Publish development version of NPM package
如何发布NPM包的开发版本?
我试图在package.json
为version
字段设置"dev"
值,但是在发布它时出错了:
$ npm publish
npm ERR! Error: Invalid version: "dev"
npm ERR! at Object.module.exports.fixVersionField (/usr/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js:180:13)
npm ERR! at /usr/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/normalize.js:29:38
npm ERR! at Array.forEach (native)
npm ERR! at normalize (/usr/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/normalize.js:28:15)
npm ERR! at final (/usr/lib/node_modules/npm/node_modules/read-package-json/read-json.js:310:33)
npm ERR! at then (/usr/lib/node_modules/npm/node_modules/read-package-json/read-json.js:124:33)
npm ERR! at /usr/lib/node_modules/npm/node_modules/read-package-json/read-json.js:299:40
npm ERR! at fs.js:266:14
npm ERR! at /usr/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:103:5
npm ERR! at Object.oncomplete (fs.js:107:15)
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! System Linux 3.11.0-15-generic
npm ERR! command "node" "/usr/bin/npm" "publish"
npm ERR! cwd /home/ionicabizau/package-name
npm ERR! node -v v0.10.24
npm ERR! npm -v 1.3.23
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/ionicabizau/package-name/npm-debug.log
npm ERR! not ok code 0
哪个是最接近的替代品?
您可以将预发布标记上传到npm 。 这些标签不会与正常的semver范围语义匹配,但允许您使用和上传开发版本。 一个例子是1.3.5-alpha.3
。 如果你上传的东西还没有版本,那么合理使用就像0.0.1-alpha.1
。
NPM包版本必须符合semver的要求
正常的版本号必须采用XYZ格式,其中X,Y和Z是非负整数,并且不得包含前导零。 X是主要版本,Y是次要版本,Z是补丁版本。 每个元素必须在数值上增加。 例如:1.9.0 - > 1.10.0 - > 1.11.0。
因此不允许使用dev
作为版本号。
此外,不建议发布任何处于开发状态的代码。 如果要在不同模块中测试模块,可以使用相对路径或使用git远程URL包含该模块。
例:
假设你正在开发的模块叫做foo
,你想在模块bar
,脚本文件bar/index.js
测试它。 假设两个模块目录都在同一个父目录中。 而不是将未完成的模块foo
发布到npm并将其安装在模块bar
,您可以执行以下操作:
var foo = require('../foo')
正如IonicãBizãu (下面的评论)所建议的那样 ,你也可以使用带有git远程URL的npm install
npm install <git remote url>
NPM安装文档提供了有关该安装方法的更多详细信息(选项g)。
或者,您可以使用本文中提出的方法: 本地测试您的npm模块,而不将它们发布到npmjs.org 。
编辑
还有另一种需要npm link
命令的替代解决方案:
npm link
命令。 这将创建从prefix/package-name
到当前文件夹的全局安装的符号链接 npm link package-name
(其中package-name
是您开发的软件包的名称)。 这将创建一个从本地node_modules文件夹到全局符号链接(在第一步中创建)的符号链接。 请注意,在某些操作系统中,您可能需要以特权用户身份运行第一个命令(通常是sudo
帮助)。
使用符号链接,您可以添加对已开发模块的更改,并立即在其他链接模块中查看其结果。
我希望这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.