2021/11/18

update multiple package to latest at once

npm ๆœ‰ไธ€ๅ€‹ๆŒ‡ไปคๅฏไปฅๅตๆธฌๅฅ—ไปถๆ˜ฏๅฆๆœ‰ๅ‡บๆ–ฐ็š„ๅฏไปฅๆ›ดๆ–ฐ,ๆˆ‘ๆ•…ๆ„่ฃไบ† jquery@2 ไปฅๅŠ bootstrap@4。

npm ls
test@1.0.0 D:\node_test
├── bootstrap@4.6.1
└── jquery@2.2.4

ๆˆ‘ๅ€‘ไพ†ๅŸท่กŒๆ›ดๆ–ฐๆชขๆŸฅ:

npm outdated
Package    Current  Wanted  Latest  Location                Depended by
bootstrap    4.6.1   4.6.1   5.1.3  node_modules/bootstrap  node_test
jquery       2.2.4   2.2.4   3.6.0  node_modules/jquery     node_test

bootstrap ่ทŸ jquery ้ƒฝๆœ‰ๆ–ฐ็‰ˆๆœฌๅฏไปฅๆ›ดๆ–ฐ,ๆ›ดๆ–ฐๆŒ‡ไปคๅฆ‚ไธ‹:

npm install jquery@latest bootstrap@latest

ๅฆ‚ๆžœไน‹ๅ‰ๅฐฑๆœ‰ๅŠ ๅ…ฅ package.json ็š„่ฉฑๅ‰‡ไธ็”จๆŒ‡ๅฎš --save ๆˆ–ๆ˜ฏ --save-dev,ไธ€ๅ…ฉๅ€‹ๅฅ—ไปถๅฏ่ƒฝ้‚„ๅฅฝ,ๅ‡่จญไปŠๅคฉๆœ‰ๅๅนพๅ€‹่ฆไธ€ๆฌกๆ›ดๆ–ฐๅฐฑ็ดฏไบ†,่€Œ npm ๆœฌ่บซๆฒ’ๆœ‰ๆไพ›ๅ…จ้ƒจๆ›ดๆ–ฐๅˆฐๆœ€ๆ–ฐ็‰ˆ็š„ๆŒ‡ไปค,npm update ่ท‘็š„ๆ˜ฏๅœจ package.json ็š„ๆฟ่™Ÿไธ‹็š„ๆœ€ๆ–ฐ็‰ˆ,ๆ‰€ไปฅ่ทจไบ†็‰ˆ่™ŸๅฐฑไธๅŸท่กŒไบ†。

npmjs ็•ถ็„ถๆœ‰ๅฅ—ไปถๅฏไปฅ่ผ”ๅŠฉ้€™ไปถไบ‹,ๅƒๆ˜ฏ npm-check,ไฝ†ๆˆ‘ๅ€‘ไนŸๅฏไปฅ้€้Ž shell script ่‡ชๅทฑ่™•็†,ไปฅไธ‹็คบ็ฏ„ awk ไปฅๅŠ cut ็š„็”จๆณ•。

# ๆŒ‡ไปคไธ€,ๅˆฉ็”จ awk
npm outdated | sed 1d | awk -F ' ' '{print sprintf("%s@latest", $1)}' | xargs npm install
npm outdated | sed 1d | awk -F ' ' '{print sprintf("%s@%s", $1, $4)}' | xargs npm install

# ๆŒ‡ไปคไบŒ,ๅˆฉ็”จ cut
npm outdated | sed 1d | cut -d' ' -f1 | xargs -I {} echo '{}@latest' | xargs npm install