npm: Mengapa versi "0.1" tidak valid?

92

Saya harus mengubah versi aplikasi npm saya dari 0.1 menjadi 0.0.1 agar npm tidak melakukan ini.

$ 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

Untuk kelengkapan inilah json yang berfungsi

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

versi sebelumnya adalah "0.1" saat membuat kesalahan.

Apakah ini semacam konsep pembuatan versi kompatibilitas API / ABI yang membutuhkan 3 set nomor versi? Mengapa pesan kesalahan tidak lebih ramah wrt ini?

Steven Lu
sumber
1
lihat npm versionperintahnya. Ini memungkinkan Anda menaikkan versi semantik berdasarkan level mayor, minor, atau patch. Contoh: npm version major, npm version minor,npm version patch
Noah

Jawaban:

110

Ya, ini diperlukan untuk pembuatan versi semantik , yang merupakan skema versi yang digunakan paket npm. Berikut cuplikan darinpm help json :

Versi harus dapat diurai oleh node-semver , yang digabungkan dengan npm sebagai dependensi. ( npm install semveruntuk menggunakannya sendiri.)

Inilah bagaimana implementasi semver npm menyimpang dari apa yang ada di semver.org:

  • Versi dapat dimulai dengan "v"
  • Item numerik yang dipisahkan dari versi tiga angka utama dengan tanda hubung akan diartikan sebagai nomor "build", dan akan meningkatkan versinya. Namun, jika tag bukan berupa angka yang dipisahkan oleh tanda hubung, maka tag tersebut diperlakukan sebagai tag pra-rilis, dan lebih kecil dari versi tanpa tag. Begitu,0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta
Michelle Tilley
sumber
37
keren. Kesalahan seharusnya hanya mengatakan sesuatu tentang efek "npm memerlukan versi semantik".
Steven Lu
++ untuk mencatat penanganan yang lebih disukai dari rilis-tag
Benxamin
@StevenLu Saya rasa ini juga harus menyebutkan versi semver yang digunakan, saat ini adalah 2.0.0.
Deoxyseia
12

Jawaban sederhana - gunakan 0.1.0

0.1 tidak akan bekerja

Selamat membuat kode!

Stanislau Baranouski
sumber
4

Jadi ya, jawaban singkatnya adalah "Anda perlu menggunakan versi semantik"

Tetapi alasan di baliknya adalah untuk menyediakan versi paket yang seragam dan masuk akal untuk semua pengguna npm. Ketika mendapatkan nomor versi dari paket, Anda memiliki beberapa tingkat keyakinan bahwa penulis mengerti semver dan mempekerjakan dengan benar.

Terima kasih
sumber