2013-06-02 46 views
60

我必須將我的npm應用程序的版本從0.1更改爲0.0.1,以便npm不要這樣做。npm:爲什麼版本「0.1」無效?

$ npm install 
npm ERR! install Couldn't read dependencies 
npm ERR! Error: invalid version: 0.1 
npm ERR!  at validVersion (/usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modul 
es/read-package-json/read-json.js:571:40) 
npm ERR!  at final (/usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modules/read 
-package-json/read-json.js:323:23) 
npm ERR!  at /usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modules/read-packag 
e-json/read-json.js:139:33 
npm ERR!  at cb (/usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modules/slide/l 
ib/async-map.js:48:11) 
npm ERR!  at /usr/local/Cellar/node/0.10.5/lib/node_modules/npm/node_modules/read-packag 
e-json/read-json.js:301:48 
npm ERR!  at fs.js:207:20 
npm ERR!  at Object.oncomplete (fs.js:107:15) 
npm ERR! If you need help, you may report this log at: 
npm ERR!  <http://github.com/isaacs/npm/issues> 
npm ERR! or email it to: 
npm ERR!  <[email protected]> 

npm ERR! System Darwin 12.3.0 
npm ERR! command "/usr/local/Cellar/node/0.10.5/bin/node" "/usr/local/bin/npm" "install" 
npm ERR! cwd /Users/lust/Documents/ply/dev-server 
npm ERR! node -v v0.10.5 
npm ERR! npm -v 1.2.18 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /Users/lust/Documents/ply/dev-server/npm-debug.log 
npm ERR! not ok code 0 

爲了完整這裏的工作JSON

$ cat package.json 
{ 
    "name": "ply", 
    "description": "ply server for local dev testing deployments", 
    "version": "0.0.1", 
    "private": true, 
    "dependencies": { 
     "express": "3.x" 
    } 
} 

版本曾經是 「0.1」 時所產生的誤差。

這是某種需要3套版本號的API/ABI兼容版本控制概念嗎?爲什麼錯誤信息不是更友好w.r.t.這個?

+0

查看'npm version'命令。它允許您根據主要,次要或補丁級別增加語義版本。例子:'npm版本主要','npm版本minor','npm版本補丁' – Noah

回答

73

是的,這是semantic versioning需要的,這是npm軟件包使用的版本控制方案。這裏的the snippet from npm help json

版必須由node-semver,這是捆綁了故宮作爲依賴被解析的。 (npm install semver自己使用。)

這裏是故宮的semver實現從semver.org什麼是如何偏離:

  • 版本可以用「V」
  • 從主三分離的數值項目啓動號碼版本的連字符將被解釋爲「構建」號碼,並且會增加版本。但是,如果標籤不是用連字符分隔的數字,則將其視爲預發佈標籤,並且小於沒有標籤的版本。所以,0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta
+25

很酷。錯誤應該只是說「npm需要語義版本控制」的效果。 –

+2

在npm github頁面上打開一個問題https://github.com/isaacs/npm – Noah

+0

++注意標籤發佈的首選處理 – Benxamin

4

所以啊,簡單的答案是「你需要使用語義版本」

但背後的理由是提供一個合理的,統一的包裝版本NPM的所有用戶。當獲得一個包的版本號時,你有一些作者理解semver的信心水平,並正在使用它。