![](/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.