ค้นหาเวอร์ชันของแพ็กเกจ npm ที่ติดตั้ง


2198

วิธีค้นหาเวอร์ชันของแพ็กเกจ node.js / npm ที่ติดตั้งไว้?

นี่จะพิมพ์เวอร์ชันของ npm เอง:

npm -v <package-name>

สิ่งนี้พิมพ์ข้อผิดพลาดลับ:

npm version <package-name>

สิ่งนี้จะพิมพ์เวอร์ชันแพ็คเกจในรีจิสตรี (เช่นเวอร์ชันล่าสุดที่มี):

npm view <package-name> version

ฉันจะรับเวอร์ชันที่ติดตั้งได้อย่างไร


5
ในการติดตั้งของฉัน "npm -v <package-name>" รายงานเวอร์ชันของ npm เอง ในการแสดงรายการแพ็คเกจล่าสุดในรีจิสทรีฉันพบว่า "npm view <package-name> version" ทำให้งานเสร็จสมบูรณ์
David A. Gray

15
npm showแสดงล่าสุดใน npm ไม่ได้ติดตั้ง
Tsagana Nokhaeva

คำตอบ:


2576

npm listสำหรับแพ็คเกจท้องถิ่นหรือnpm list -gสำหรับแพ็คเกจที่ติดตั้งทั่วโลก

คุณสามารถค้นหาเวอร์ชันของแพ็กเกจเฉพาะโดยส่งชื่อเป็นอาร์กิวเมนต์ ตัวอย่างเช่นnpm list gruntจะส่งผลให้:

projectName@projectVersion /path/to/project/folder
└── grunt@0.4.1

หรือคุณสามารถเรียกใช้npm listโดยไม่ผ่านชื่อแพ็คเกจเป็นอาร์กิวเมนต์เพื่อดูเวอร์ชันของแพ็คเกจทั้งหมดของคุณ:

├─┬ cli-color@0.1.6 
 └── es5-ext@0.7.1 
├── coffee-script@1.3.3 
├── less@1.3.0 
├─┬ sentry@0.1.2 
 ├── file@0.2.1 
 └── underscore@1.3.3 
└── uglify-js@1.2.6 

คุณยังสามารถเพิ่ม--depth=0อาร์กิวเมนต์เพื่อแสดงรายการแพ็กเกจที่ติดตั้งโดยไม่ต้องพึ่งพา


126
สำหรับ mac และ linux เราควรเพิ่ม "| grep module_name" เพื่อกรองรุ่นโมดูลที่ต้องการ โดยเฉพาะอย่างยิ่งเมื่อทำงานทั่วโลกด้วย -g ตัวอย่างเช่น: "npm list -g | grep express" เพื่อรับเวอร์ชันเอ็กซ์เพรสที่ติดตั้งไว้
guya

103
หากคุณต้องการโมดูลที่เฉพาะเจาะจงคุณสามารถเรียกใช้มันnpm list less-middlewareเป็นตัวอย่าง
juanpaco

13
คำแนะนำต่อ @ guya สำหรับระบบที่ใช้ * nix บน Windows คุณสามารถใช้ PowerShell เพื่อผลลัพธ์ที่คล้ายกัน: | select-string module_nameเพื่อกรองโมดูล หรือถ้าคุณกำลังใช้ Git Bash (หรือเพียงแค่ทุบตีสำหรับเรื่องที่) grepคุณสามารถใช้
Noel

15
หากคุณจำไม่ได้list, npm lsยังใช้งานได้ อันที่จริงคำสั่ง npm จำนวนมากมีนามแฝงและยิ่งกว่านั้นหากคุณพิมพ์สตริงย่อยของคำสั่งหากสตริงย่อยนี้ไม่ชัดเจนมันจะทำงานเช่นกัน ตัวอย่างเช่นnpm ls, npm list, npm lisมีทั้งหมดเดียวกัน หากคุณต้องการผลลัพธ์ verbose เพิ่มเติมลองnpm ll(แต่คุณอาจต้องการ--depth=0เพิ่มมัน)
jakub.g

4
เอาต์พุตไม่ดีที่สุดสำหรับการวิเคราะห์คำด้วยสคริปต์ มีวิธีการรับผลลัพธ์ที่เป็นเพียงรุ่นแพคเกจโดยไม่ต้องทำอะไรเช่นnpm list -g | awk -F@ '/<package>/ { print $2}'
Thayne

867

อีกวิธีที่รวดเร็วในการค้นหาสิ่งแพคเกจที่มีการติดตั้งทั้งในประเทศและโดยไม่ต้องพึ่งพาของพวกเขาคือการใช้งาน:

npm list --depth=0

ซึ่งให้สิ่งที่คุณชอบ

├── bower@0.8.6
├── grunt@0.4.1
├── grunt-bower-requirejs@0.4.3
├── grunt-contrib-clean@0.4.1
├── grunt-contrib-coffee@0.7.0
├── grunt-contrib-copy@0.4.1
├── grunt-contrib-imagemin@0.1.4
├── grunt-contrib-jshint@0.1.1
├── grunt-contrib-livereload@0.1.2
├── grunt-contrib-requirejs@0.4.1
├── grunt-regarde@0.1.1
└── grunt-svgmin@0.1.0

npm list -g --depth=0เห็นได้ชัดว่าเดียวกันสามารถทำได้ทั่วโลกที่มี

วิธีนี้จะชัดเจนขึ้นในกรณีที่คุณติดตั้งแพ็คเกจจำนวนมาก

npm outdated -g --depth=0เพื่อหาที่แพคเกจที่ต้องมีการปรับปรุงคุณสามารถใช้


14
มันให้ฉันเหมือนกันโดยไม่ต้อง
ygaradon

7
ดูเหมือนว่าพวกเขาจะแก้ไขมันใน npm 1.4.6 ดูgithub.com/npm/npm/issues/4733
Howie

7
ใช้งานได้ดีกับ| grep <package_name>
Marco Prins

4
@ygaradon ถูกต้อง แต่--depth=0ทำให้เร็วขึ้นเพราะไม่จำเป็นต้องโหลดการอ้างอิงซ้ำ
Marco Prins

npm list -g --depth=0สำหรับรายการโมดูลที่ติดตั้งทั่วโลก
EdgeDev

219

npm view <package> version - ส่งคืนเวอร์ชันล่าสุดที่มีอยู่บนแพ็คเกจ

npm list --depth=0 - ส่งคืนเวอร์ชันของโมดูลที่ติดตั้งทั้งหมดโดยไม่มีการขึ้นต่อกัน

npm list - ส่งคืนเวอร์ชันของโมดูลและการอ้างอิงทั้งหมด

และสุดท้ายเพื่อรับรุ่นโหนด: node -v


16
มุมมอง npm <แพคเกจ> เวอร์ชันไปที่รีจิสตรีรีโมต npm ไม่ใช่ระบบไฟล์โลคัล ...
Alexander Mills

@AlexanderMills True แต่การมีที่นี่จะช่วยหลีกเลี่ยงการค้นหาอื่น Btw, npm v, npm infoและมีนามแฝงทั้งหมดของnpm show npm view
CPHPython

85
npm info YOUR_PACKAGE version

เช่น

npm info grunt version
0.4.5

104
สิ่งนี้ไม่แสดงเวอร์ชันแพ็คเกจที่ติดตั้ง แต่จะแสดงเวอร์ชันล่าสุดที่มีอยู่
แทนเนอร์เซมาราด

เห็นด้วยกับ @ tanner-semerad ฉันเช็คอินเอกสารของ npmเพื่อล้างข้อมูลแล้ว npm infoเป็นนามแฝงสำหรับnpm viewและในเอกสารของ npmคุณจะพบว่าสถานะ: คำสั่งนี้แสดงข้อมูลเกี่ยวกับแพคเกจและพิมพ์ไปยังสตรีมที่อ้างอิงโดยการกำหนดค่า outfd ซึ่งเป็นค่าเริ่มต้นที่ stdout [... ] เวอร์ชันเริ่มต้นคือ "ล่าสุด" หากไม่ได้ระบุ นั่นคือวิธีที่ฉันลงคะแนน
dannydedog

แสดงเวอร์ชันล่าสุดที่พร้อมใช้งานไม่ใช่ติดตั้งล่าสุด downvoted
lofihelsinki

2
npm info YOUR_PACKAGE versionคนเดียวที่ทำงาน :)
GOXR3PLUS

เดียวกัน 'ข้อมูล npm YOUR_PACKAGE เวอร์ชัน' สิ่งเดียวที่ใช้ได้
Jonas

63

ฉันเพิ่งใช้

npm list | grep <package name>

และมันก็ใช้งานได้ดี

บน windows run:

npm list | find <package name>

ใน PowerShell ทำงาน:

npm list | sls <package name>

3
findเวอร์ชันใช้งานไม่ได้สำหรับฉัน - แม้จะมีสตริงที่ยกมา แต่ powershell ทำงานได้ดี
fiat

4
สำหรับผู้ใช้ Windows: npm list -g --depth=0 |find "<package name>"โปรดสังเกตเครื่องหมายคำพูดคู่
robe007

56

จากรูทของแพ็คเกจทำ:

node -p "require('./package.json').version"

แก้ไข : (ดังนั้นคุณต้องcdเข้าสู่โฮมไดเร็กทอรี่ของโมดูลหากคุณยังไม่ได้ติดตั้งถ้าคุณติดตั้งโมดูลด้วยnpm installแล้วมันจะอยู่ภายใต้node_modules/<module_name>)

แก้ไข 2 : อัปเดตตามคำตอบจาก @ jeff-dickey


ดี! ค่อนข้างเร็วกว่าการเรียกใช้ "รายการ npm" ตามที่คำตอบอื่น ๆ แนะนำ (~ 1s แทน ~ 20s) - อย่างน้อยเมื่อคุณมีข้อมูลโค้ดนี้พร้อม! (ควรมีปลั๊กอินสำหรับการทำเช่นนี้ ... )
Venryx

1
หรือnode -p "require('./package.json').version"
Jeff Dickey

2
สิ่งนี้จะไม่ติดตั้งเวอร์ชันจริงหากมีตัวคั่นช่วงเช่น ^ ~
geedew


21

การรวมคำตอบข้างต้นเข้าด้วยกันและสร้างการค้นหาที่ง่ายที่สุด
เรียกใช้จากรูทโปรเจ็กต์ ไม่จำเป็นต้องcdเข้าไปในโฟลเดอร์ใด ๆ เพียง 1 บรรทัด:

node -p "require('SOMEPACKAGE/package.json').version"


21

คุณสามารถตรวจสอบเวอร์ชั่นด้วยคำสั่งนี้:

npm info <package name> version


29
อีกครั้งจะแสดงเวอร์ชันล่าสุดที่มีในแพ็คเกจรีจิสตรีไม่ใช่เวอร์ชันของแพ็คเกจที่ติดตั้งในปัจจุบัน
David Ferenczy Rogožan

@DawidFerenczy เห็นด้วยกับการแสดงเฉพาะเวอร์ชันล่าสุดเช่นข้อมูล npm httpaction
Nitin

16

ถ้าคุณเห็นด้วยกับการติดตั้งJQnpm listคุณสามารถใช้การส่งออกของ JSON

npm -j ls <package-name> | jq -r .version

หรือถ้าคุณต้องการที่จะ verbose

npm --json list <package-name> | jq --raw-output '.version'

ตัวอย่างเช่น

$ npm -j ls ghost | jq -r .version
0.4.2

นอกจากนี้รูปแบบ JSON จะแตกต่างกันเล็กน้อยสำหรับแพ็คเกจทั่วโลกดังนั้นคุณจะต้องเปลี่ยนแบบสอบถาม

ตัวอย่างเช่น

$ npm -j -g ls | jq -r .dependencies.ghost.version
0.4.2

14

หากคุณกล้าพอ (และnodeติดตั้งแล้ว) คุณสามารถทำสิ่งต่อไปนี้ได้เสมอ:

echo "console.log(require('./package.json').version);" | node

นี่จะพิมพ์เวอร์ชันของแพ็คเกจปัจจุบัน นอกจากนี้คุณยังสามารถแก้ไขมันให้เสียสติได้เช่นนี้

echo "eval('var result='+require('child_process').execSync('npm version',{encoding:'utf8'})); console.log(result.WHATEVER_PACKAGE_NAME);" | node

ที่จะพิมพ์รุ่นของแพคเกจที่จะมองเห็นด้วยWHATEVER_PACKAGE_NAMEnpm version


node -e "console.log(require('./package.json').version);"
papiro

12

หากต้องการดูแพคเกจที่ติดตั้งทั้งหมดในเครื่องหรือทั่วโลกให้ใช้คำสั่งเหล่านี้:

  1. npm listสำหรับแพ็คเกจท้องถิ่นหรือnpm list -gสำหรับแพ็คเกจที่ติดตั้งทั่วโลก
  2. npm list --depth=0
  3. npm list | sls <package name>
  4. node -v


10

ฉันได้สร้างเครื่องมือที่ทำอย่างนั้น - qnm

qnm - ยูทิลิตี้ CLI อย่างง่ายสำหรับการสืบค้นnode_modulesไดเรกทอรี

ติดตั้งโดยใช้:

npm i --global qnm

และเรียกใช้:

qnm [module]

ตัวอย่างเช่น:

> qnm lodash

lodash
├── 4.17.5
├─┬ cli-table2
 └── 3.10.1
└─┬ karma
  └── 3.10.1

ซึ่งหมายความว่าเราได้lodashรับการติดตั้งในรากของnode_modulesและสองชุดอื่น ๆ ในnode_modulesของและcli-table2karma

มันเร็วมากและมีคุณสมบัติที่ดีเช่นการเติมแท็บและการค้นหาที่ตรงกัน


9

ในการแสดงรายการแพ็กเกจท้องถิ่นด้วยหมายเลขเวอร์ชันให้ใช้:

npm ls --depth=0

หากต้องการแสดงแพ็กเกจโกลบอลที่มีหมายเลขเวอร์ชันให้ใช้:

npm ls -g --depth=0


8

คุณสามารถใช้NPM มุมมอง [โมดูล] รุ่น , ข้อมูล NPM [โมดูล] รุ่น , การแสดง NPM [โมดูล] รุ่นหรือNPM วี [โมดูล] รุ่นเพื่อตรวจสอบเวอร์ชั่นบนโมดูล NPM ติดตั้ง

สมมติว่าเวอร์ชั่นโมดูล grunt ของฉันคือ 0.4.5:

npm view grunt version => 0.4.5
npm info grunt version => 0.4.5
npm show grunt version => 0.4.5
npm v grunt version    => 0.4.5

15
ทั้งหมดของผู้ที่แสดงรุ่นใหม่ล่าสุดที่มีอยู่ไม่ได้รุ่นที่ติดตั้งในปัจจุบัน

8

npm list --depth 0 เป็นคำสั่งที่แสดงไลบรารี่ทั้งหมดที่มีเวอร์ชั่น แต่คุณสามารถใช้ได้ npm-check

npm-check เป็นไลบรารี่ที่ดีในการจัดการทุกสิ่งที่เกี่ยวกับเหตุการณ์ของระบบเวอร์ชั่นซึ่งจะแสดงเวอร์ชั่นไลบรารี่, อัพเดตเวอร์ชั่นใหม่, เวอร์ชั่นที่ไม่ได้ใช้และอื่น ๆ อีกมากมาย

เพื่อติดตั้งมันก็แค่ทำงาน

npm install -g npm-check

และเพียงแค่เรียกใช้

npm-check

ตรวจสอบภาพหน้าจอที่แสดงทุกอย่างเกี่ยวกับเวอร์ชันแพ็คเกจการอัพเดตเวอร์ชันใหม่และเวอร์ชันที่ไม่ได้ใช้

ป้อนคำอธิบายรูปภาพที่นี่

มันทำงานได้ทั่วโลกเช่นกัน ให้มันลอง. หวังว่าจะช่วยคนได้


7

ต่อไปนี้เป็น Unix แบบพกพา (ใช้grepและsed) หนึ่งซับในที่ส่งคืนสตริงเวอร์ชันของแพ็กเกจ npm ที่ติดตั้งทั่วโลก (ลบออกgจาก-pgเป็นเคียวรีแพ็กเกจโลคัลแทน):

$ npm ll -pg --depth=0 grunt | grep -o "@.*:" | sed 's/.$//; s/^.//'
0.4.5
  • npm llผลสตริง parseable รูปแบบเช่น: /usr/lib/node_modules/npm:npm@2.14.8:;
  • grepคำสั่งสารสกัดจากค่าระหว่าง@และ:รวม;
  • sedคำสั่งเอาตัวอักษรโดยรอบ

6

ฉันเพิ่มสิ่งนี้ลงใน. bashrc ของฉัน

function npmv {
    case $# in # number of arguments passed
    0) v="$(npm -v)" ; #store output from npm -v in variable
        echo "NPM version is: $v"; #can't use single quotes 
                                   #${v} would also work
    ;;   
    1) s="$(npm list --depth=0 $1 | grep $1 | cut -d @ -f 2)";
       echo "$s";
    ;;
    2) case "$2" in # second argument
        g) #global|#Syntax to compare bash string to literal
             s="$(npm list --depth=0 -g $1 | grep $1 | cut -d @ -f 2)";
        echo "$s";
        ;;
        l) #latest
             npm view $1 version; #npm info $1 version does same thing
       ;;
       *) echo 'Invalid arguments';
       ;;
       esac;
    ;;
    *) echo 'Invalid arguments';
    ;;
    esac;
}
export -f npmv

ตอนนี้สิ่งที่ฉันต้องทำคือพิมพ์:

  • npmvสำหรับเวอร์ชันของ npm เช่น:NPM version is: 4.2.0
  • npmv <package-name>สำหรับรุ่นในระบบเช่น:0.8.08
  • npmv <package-name> gสำหรับเวอร์ชันทั่วโลกเช่น:0.8.09
  • npmv <package-name> lสำหรับรุ่นล่าสุดเช่น:0.8.10

หมายเหตุ -d on คำสั่ง cut หมายถึงคั่นด้วยตามด้วย @ จากนั้น f หมายถึงฟิลด์ที่ 2 หมายถึงฟิลด์ที่สองเนื่องจากจะมีด้านใดด้านหนึ่งของสัญลักษณ์ @


5

คุณสามารถลองสิ่งนี้: npm show {package} versionแสดงเวอร์ชั่นแพ็คเกจล่าสุด และหากแพ็คเกจของคุณล้าสมัยnpm outdatedจะแสดงพร้อมข้อมูลรุ่น


2
OP ได้สอบถามเกี่ยวกับรุ่นของแพ็คเกจที่ติดตั้งอยู่ในปัจจุบันไม่ใช่รุ่นล่าสุดที่มีอยู่ในรีจิสตรีแพ็คเกจ
David Ferenczy Rogožan

5

นี่เป็นคำถามง่าย ๆ และควรมีคำตอบที่ง่ายกว่าที่ฉันเห็นด้านบน

หากต้องการดูแพ็กเกจ npm ที่ติดตั้งพร้อมกับเวอร์ชันคำสั่งคือnpm ls --depth=0ตามค่าดีฟอลต์แสดงสิ่งที่ติดตั้งแบบโลคัล หากต้องการดูแพคเกจติดตั้งทั่วโลกเพิ่มอาร์กิวเมนต์:-globalnpm ls --depth=0 -global

--depth=0 ส่งคืนรายการแพ็กเกจที่ติดตั้งโดยที่ไม่ต้องพึ่งพาซึ่งเป็นสิ่งที่คุณต้องการทำเกือบตลอดเวลา

lsเป็นชื่อของคำสั่งและlist เป็นนามแฝงlsสำหรับ


3

เข้าถึง package.json

คุณสามารถเข้าถึงpackage.jsonหรือbower.jsonแพคเกจด้วย:

notepad ./node_modules/:packageName/package.json

นี้จะเปิดpackage.jsonในnotepadที่มีversion numberของคุณรวมอยู่ใน:packageNamecommand

ตัวอย่างเช่น :

notepad ./node_modules/vue-template-compiler/package.json

โชคดี.


6
มีวิธีที่ง่ายกว่าในการทำเช่นนี้เวอร์ชั่นที่คุณระบุใน package.json อาจไม่ใช่เวอร์ชันที่ติดตั้งเนื่องจากสัญกรณ์ช่วง Semver นั่นคือการอ้างอิงอาจมีการระบุว่าเป็นรุ่น ^ 1.3.0 แต่อาจหมายถึงอะไรจากรุ่น 1.3.0 ถึง 1.99.99
Isochronous

3

เราสามารถใช้npm ดู any-contract (ชื่อโมดูลของคุณ) -v


1
สิ่งนี้แสดงเวอร์ชั่นล่าสุดที่มีให้ไม่ใช่รุ่นในไดเรกทอรีท้องถิ่น
christianbundy

@christianbundy คุณสามารถใช้รายการ npm --depth = 0 | grep uuid
Nitin

ฉันต้องใช้npm list --depth=0 | grep uuid | awk '{ print $2; }' | cut -d '@' -f 2แต่ใช่มันใช้งานได้ตราบใดที่มันเป็นการพึ่งพาระดับบนสุด ฉันไม่คิดว่าเป็นเช่นนั้นเสมอไปตามคำถามเดิม
christianbundy


0

มันง่ายมาก .. แค่พิมพ์บรรทัดล่าง

npm view < package-name > version

ตัวอย่าง **

npm view redux version

ฉันมี Redux รุ่น 7.2.0

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