如何发布NPM包的开发版本?
我尝试在"dev"
中为version
字段设置package.json
值,但发布时出错:
$ 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
哪个是最接近的选择?
答案 0 :(得分:17)
你可以upload prerelease tags to npm。这些标签不会与正常的semver范围语义匹配,但允许您使用和上传开发版本。一个例子是1.3.5-alpha.3
。如果您正在上传尚无版本的内容,那么合理使用就像0.0.1-alpha.1
。
答案 1 :(得分:6)
NPM包版本必须符合semver
的要求普通版本号必须采用X.Y.Z形式,其中X,Y和Z为 非负整数,并且不得包含前导零。 X是 主要版本,Y是次要版本,Z是补丁版本。 每个元素必须在数值上增加。例如:1.9.0 - &gt; 1.10.0 - &GT; 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 install documentation提供有关该安装方法的更多详细信息(选项g)。
或者,您可以使用此帖中提议的方法:Locally test your npm modules without publishing them to npmjs.org。
修改强>
还有另一种替代解决方案需要npm link
command:
npm link
命令。这将创建从prefix/package-name
到当前文件夹npm link package-name
(其中package-name
是您开发的软件包的名称)。这将创建一个从本地node_modules文件夹到全局符号链接(在第一步中创建)的符号链接。请注意,您可能需要在某些操作系统中以特权用户身份运行第一个命令(通常sudo
帮助)。
使用符号链接,您可以将更改添加到已开发的模块,并立即在其他链接的模块中查看其结果。
我希望这会有所帮助。