update-nvm

به‌روزرسانی هر major نصب‌شدهٔ Node با nvm، تازه‌سازی بسته‌های سراسری npm، ارتقای npm و فعال‌سازی corepack.
Linux v1.2.1 nvm Node.js

نصب

mkdir -p ~/.local/bin
curl -fsSL https://omid.dev/scripts/update-nvm.sh -o ~/.local/bin/update-nvm
chmod +x ~/.local/bin/update-nvm

شاید هر روز pacman -Syu بزنید، ولی آخرین‌بار کی هر major مربوط به Node را در nvm تازه کردید؟

update-nvm majorهایی را که از قبل نصب دارید (یا صریحاً پاس می‌دهید) پیمایش می‌کند، آخرین patch هر خط را نصب می‌کند، بسته‌های سراسری npm را تازه می‌کند، با --latest-npm (پیش‌فرض روشن) npm را ارتقا می‌دهد و corepack enable را اجرا می‌کند. اگر major از قبل روی آخرین patch باشد، Node دست نخورده می‌ماند ولی globals مگر با --skip-npm باز هم تازه می‌شوند.

نصب

1
2
3
mkdir -p ~/.local/bin
curl -fsSL https://omid.dev/scripts/update-nvm.sh -o ~/.local/bin/update-nvm
chmod +x ~/.local/bin/update-nvm

به nvm و curl نیاز دارید. اگر ~/.local/bin در PATH نیست، اضافه کنید.

برای بررسی سورس: static/scripts/update-nvm.sh.

شروع سریع

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
update-nvm              # همهٔ majorهای نصب‌شده
update-nvm --lts        # فقط lts/*
update-nvm 24           # یک major
update-nvm 28           # نصب major جدید (برای کپی globals سؤال می‌پرسد)
update-nvm --npm-only   # فقط npm و globals؛ بدون دست زدن به Node
update-nvm --prune      # حذف patchهای قدیمی‌تر در همان major
update-nvm --self-update  # فقط خود اسکریپت را عوض می‌کند
update-nvm --version
update-nvm -q --lts
update-nvm --dry-run

چه کار می‌کند

  1. majorهای هدف را مشخص می‌کند (نصب‌شده‌ها، --lts، یا نسخه‌های صریح).
  2. برای هر major، آخرین release را با nvm نصب می‌کند مگر از قبل جاری باشد (یا --force / --npm-only).
  3. مگر با --skip-npm، بسته‌های سراسری npm را تازه می‌کند.
  4. مگر با --no-latest-npm، npm را به جدیدترین نسخهٔ پشتیبانی‌شده ارتقا می‌دهد.
  5. مگر با --no-corepack، corepack enable را اجرا می‌کند.
  6. با --prune، patchهای قدیمی‌تر همان major را حذف می‌کند.

اگر major هنوز نصب نباشد، می‌پرسد آیا globals را از major دیگری کپی کند. Enter = نصب تازه؛ یا شمارهٔ منبع را بزنید. برای نصب غیرتعاملی، NVM_REINSTALL_FROM را ببینید.

دستورها و گزینه‌ها

گزینهتوضیح
(بدون آرگومان)همهٔ majorهای نصب‌شده
VERSION …به‌روزرسانی یا نصب majorهای داده‌شده
--ltsفقط lts/*
--force, -fنصب مجدد حتی اگر patch جاری باشد
--pruneحذف patchهای قدیمی‌تر در هر major
--latest-npmارتقای npm (پیش‌فرض: روشن)
--no-latest-npmنگه داشتن npm همراه Node
--no-corepackرد شدن از corepack enable
--skip-npmفقط Node؛ بدون globals
--npm-onlyفقط npm و globals
--quiet, -qخروجی کم؛ بدون پرسش نصب
--dry-run, -nفقط نمایش؛ بدون تغییر
--self-updateبه‌روزرسانی خود اسکریپت از omid.dev
--versionچاپ نسخهٔ اسکریپت
-h, --helpراهنما

متغیرهای محیطی

متغیرتوضیح
NVM_DIRمسیر nvm (پیش‌فرض: ~/.nvm)
NVM_UPDATE_VERSIONSنسخه‌های جداشده با فاصله (با --lts نادیده گرفته می‌شود)
NVM_REINSTALL_FROMبرای نصب غیرتعاملی major جدید، کپی globals از این major
UPDATE_NVM_SCRIPT_URLURL جایگزین برای --self-update
UPDATE_NVM_SKIP_SELF_CHECKبا 1 بررسی نسخهٔ جدیدتر اسکریپت را رد کنید

نمونهٔ cron

0 3 * * 0 ~/.local/bin/update-nvm -q --lts --prune

خودبه‌روزرسانی

1
update-nvm --self-update

در اجرای عادی ممکن است هشدار نسخهٔ جدیدتر اسکریپت بدهد. با UPDATE_NVM_SKIP_SELF_CHECK=1 آن را خاموش کنید.

مرتبط

جستجو