繁体   English   中英

发布NPM包的开发版本

[英]Publish development version of NPM package

如何发布NPM包的开发版本?

我试图在package.jsonversion字段设置"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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM