发布NPM包的开发版本

Ion*_*zău 6 node.js npm

如何发布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
Run Code Online (Sandbox Code Playgroud)

哪个是最接近的选择?

yin*_*ash 22

您可以将预发布标记上传到npm.这些标签不会与正常的semver范围语义匹配,但允许您使用和上传开发版本.一个例子是1.3.5-alpha.3.如果你上传的东西还没有版本,那么合理使用会是这样的0.0.1-alpha.1.


Tom*_*Tom 7

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.假设两个模块目录都在同一个父目录中.而不是将未完成的模块发布foonpm并将其安装在模块中bar,您可以执行以下操作:

var foo = require('../foo')
Run Code Online (Sandbox Code Playgroud)

正如IonicãBizãu(下面的评论)所建议的那样,您也可以使用带有git远程URL的npm install

npm install <git remote url>
Run Code Online (Sandbox Code Playgroud)

NPM安装文档提供了有关该安装方法的更多详细信息(选项g).

或者,您可以使用本文中提出的方法:本地测试您的npm模块,而不将它们发布到npmjs.org.

编辑

还有另一种需要npm link 命令的替代解决方案:

  • npm link在开发模块中执行命令.这将创建从prefix/package-name当前文件夹到全局安装的符号链接
  • 另一个步骤是在某个其他位置(用于测试已开发模块的其他模块/应用程序)执行npm link package-name(其中package-name是您开发的软件包的名称).这将创建一个从本地node_modules文件夹到全局符号链接(在第一步中创建)的符号链接.

请注意,您可能需要sudo在某些操作系统中以特权用户身份运行第一个命令(通常有帮助).

使用符号链接,您可以添加对已开发模块的更改,并立即在其他链接模块中查看其结果.

我希望这会有所帮助.