2014-01-25 113 views
4

如何發佈NPM包的開發版?發佈NPM包的開發版

我試圖在package.json設置"dev"version場,但我得到了出版時的錯誤:

$ 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

您可以發佈'1.0.0-dev' – Machado

回答

7

NPM包版本必須滿足semver

要求一個正常的版本號必須採取的形式X.Y.Z其中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') 

至於建議的Ionicã Bizãu(下面的評論),你也可以使用新公共管理與遠程Git網址,例如:安裝

npm install <git remote url> 

NPM install documentation提供了該安裝方法的更多詳細信息(選項g)。

或者,您可以使用本文中提出的方法:Locally test your npm modules without publishing them to npmjs.org

編輯

有需要npm linkcommand另一種替代方案:

  • 執行您開發的模塊內npm link命令。這將創建全局安裝的符號鏈接,從prefix/package-name到當前文件夾
  • 另一步是在其他某個位置(您用來測試開發的其他模塊/應用程序)執行npm link package-name(其中package-name是開發包的名稱)模塊)。這將創建從本地node_modules文件夾到全局符號鏈接(在第一步中創建)的符號鏈接。

請注意,您可能需要以特權用戶身份運行的第一個命令(通常sudo有助於)在一些操作系統。

使用符號鏈接,您可以將更改添加到您開發的模塊中,並立即在其他鏈接的模塊中查看其結果。

我希望這會有所幫助。

+0

嘿,你可以請更新你的答案,'npm install'命令支持git存儲庫URL,所以dev版本將被安裝?例如'npm install git:// github.com/user/repo.git' –

+0

@IonicãBizãu,謝謝你的建議;非常方便的選擇! – Tom

7

您可以upload prerelease tags to npm。這些標籤不會與普通的semver範圍語義相匹配,但可以同時使用和上傳開發版本。一個例子是1.3.5-alpha.3。如果你正在上傳一些沒有版本的東西,那麼合理的使用就像0.0.1-alpha.1

+0

噢,聽起來不錯,實際上我曾經這樣做過,但是在'npm發佈'這樣的版本後,'npm install'會安裝穩定版本(不是alpha?) –

+0

是的。使用alpha的唯一方法是在安裝時指定alpha標籤。 – yincrash

+0

明白了,接受的答案 - 更好,實際上預期的行爲。 :) –