npm: เหตุใดเวอร์ชัน“ 0.1” จึงไม่ถูกต้อง


92

ฉันต้องเปลี่ยนเวอร์ชันของแอป npm จาก 0.1 เป็น 0.0.1 เพื่อไม่ให้ npm ทำสิ่งนี้

$ 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!     <npm-@googlegroups.com>

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" เมื่อเกิดข้อผิดพลาด

แนวคิดการกำหนดเวอร์ชันที่เข้ากันได้กับ API / ABI บางประเภทนี้ต้องการหมายเลขเวอร์ชัน 3 ชุดหรือไม่ เหตุใดข้อความแสดงข้อผิดพลาดจึงไม่เป็นมิตรกับสิ่งนี้


1
ดูnpm versionคำสั่ง ช่วยให้คุณสามารถเพิ่มเวอร์ชันความหมายตามระดับหลักรองหรือแพตช์ ตัวอย่าง: npm version major, npm version minor,npm version patch
โนอาห์

คำตอบ:


111

ใช่สิ่งนี้จำเป็นสำหรับการกำหนดเวอร์ชันเชิงความหมายซึ่งเป็นรูปแบบการกำหนดเวอร์ชันแพ็กเกจ npm ที่ใช้ นี่คือตัวอย่างจากnpm help json :

เวอร์ชันต้องแยกวิเคราะห์ได้โดยnode-semverซึ่งรวมกับ npm เป็นการอ้างอิง ( npm install semverเพื่อใช้เอง)

นี่คือวิธีการใช้งาน semver ของ npm เบี่ยงเบนไปจากสิ่งที่อยู่ใน semver.org:

  • เวอร์ชันสามารถเริ่มต้นด้วย "v"
  • รายการตัวเลขที่แยกออกจากเวอร์ชันหลักสามตัวด้วยเครื่องหมายขีดกลางจะถูกตีความว่าเป็นตัวเลข "บิลด์" และจะเพิ่มเวอร์ชัน แต่หากแท็กไม่ใช่ตัวเลขที่คั่นด้วยยัติภังค์ก็จะถือว่าเป็นแท็กก่อนเผยแพร่และน้อยกว่าเวอร์ชันที่ไม่มีแท็ก ดังนั้น,0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta

37
เย็น. ข้อผิดพลาดควรพูดอะไรบางอย่างกับเอฟเฟกต์ของ "npm ต้องมีการกำหนดเวอร์ชันเชิงความหมาย"
Steven Lu

++ สำหรับการสังเกตการจัดการที่ต้องการของการเผยแพร่ที่ติดแท็ก
Benxamin

@StevenLu ฉันคิดว่าสิ่งนี้ควรพูดถึงเวอร์ชันของ semver ที่ใช้ปัจจุบันคือ 2.0.0
Deoxyseia


4

ใช่แล้วคำตอบสั้น ๆ คือ "คุณต้องใช้การกำหนดเวอร์ชันความหมาย"

แต่เหตุผลเบื้องหลังนั้นคือการมอบเวอร์ชันแพ็กเกจที่เหมาะสมและสม่ำเสมอให้กับผู้ใช้ npm ทุกคน เมื่อได้รับหมายเลขรุ่นของแพคเกจที่คุณมีบางระดับความเชื่อมั่นที่ผู้เขียนเข้าใจ semver และมีการจ้างงานอย่างถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.