n
– إدارة إصدارات Node.js بشكل تفاعليإدارة إصدار Node.js: لا توجد أقسام فرعية، ولا إعداد ملف تعريف، ولا توجد واجهة برمجة تطبيقات معقدة، فقط ملف .
n
– إدارة إصدارات Node.js بشكل تفاعلي n
مدعوم على أنظمة التشغيل macOS وLinux، بما في ذلك نظام Windows الفرعي لنظام التشغيل Linux والعديد من الأنظمة الأخرى المشابهة لنظام التشغيل Unix. إنه مكتوب كبرنامج نصي BASH ولكنه لا يتطلب منك استخدام BASH كغطاء أوامر خاص بك.
n
لا يعمل في الأصداف الأصلية على Microsoft Windows (مثل PowerShell)، أو Git لنظام التشغيل Windows BASH، أو مع Cygwin DLL.
إذا كان لديك Node.js مثبتًا بالفعل، فهناك طريقة سهلة لتثبيت n
وهي استخدام npm
:
npm install -g n
موقع الجذر الافتراضي المستخدم عند تشغيل n
هو /usr/local
حيث لا يملك المستخدم العادي إذن الكتابة. قد تواجه نفس النوع من خطأ الأذونات عند استخدام npm لتثبيت الوحدات العامة، مثل الأمر أعلاه. لديك ثلاثة خيارات رئيسية:
n
استخدام موقع مخصص حيث لديك أذونات الكتابة (راجع N_PREFIX
)sudo
أمام الأمر لتشغيله كمستخدم متميز يقوم n
بتخزين إصدارات Node.js في الدليل الفرعي n/versions
. يتم تثبيت إصدار Node.js النشط في bin
الفرعية، include
، و lib
، share
.
للحصول على ملكية أدلة النظام (الخيار 1):
# make cache folder (if missing) and take ownership
sudo mkdir -p /usr/local/n
sudo chown -R $(whoami) /usr/local/n
# make sure the required folders exist (safe to execute even if they already exist)
sudo mkdir -p /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
# take ownership of Node.js install destination folders
sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
إذا لم يكن npm
متاحًا بعد، فإحدى الطرق لبدء التثبيت هي تنزيل n
وتشغيله مباشرة. لتثبيت الإصدار lts
من Node.js:
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install lts
# If you want n installed, you can use npm now.
npm install -g n
إذا لم تكن بحاجة إلى دعم لتحديثات n
نفسها، فيمكنك فقط حفظ التنزيل:
curl -fsSL -o /usr/local/bin/n https://raw.githubusercontent.com/tj/n/master/bin/n
chmod 0755 /usr/local/bin/n
n install lts
على نظام التشغيل macOS مع Homebrew، يمكنك تثبيت الصيغة n.
brew install n
أو على نظام التشغيل macOS المزود بـ MacPorts، يمكنك تثبيت المنفذ n:
port install n
في Linux وmacOS، يسمح n-install بالتثبيت مباشرة من GitHub؛ على سبيل المثال:
curl -L https://bit.ly/n-install | bash
يقوم n-install بتعيين كل من PREFIX
و N_PREFIX
على $HOME/n
، وتثبيت n
على $HOME/n/bin
، وتعديل ملفات التهيئة للأصداف المدعومة لتصدير N_PREFIX
وإضافة $HOME/n/bin
إلى PATH
، وتثبيت الأحدث إصدار LTS Node.js.
ونتيجة لذلك، تتم استضافة كل من n
نفسه وجميع إصدارات Node.js التي يديرها داخل دليل واحد قابل للتكوين اختياريًا، والذي يمكنك إزالته لاحقًا باستخدام البرنامج النصي n-uninstall
المضمن. يقوم n-update
n
نفسه إلى الإصدار الأحدث. راجع n-install repo لمزيد من التفاصيل.
قد يتضمن التغيير من Node.js السابق المثبت إلى موقع مختلف بضع خطوات إضافية. راجع المستندات لتغيير موقع العقدة للحصول على مثال تفصيلي للتبديل من استخدام Homebrew إلى استخدام n
لإدارة Node.js.
لديك مشكلة مع إصدارات متعددة إذا رأيت بعد تثبيت العقدة أن الموقعين "المثبت" و"النشيط" مختلفان:
% n lts
copying : node/20.12.2
installed : v20.12.2 to /usr/local/bin/node
active : v21.7.3 at /opt/homebrew/bin/node
ما عليك سوى تنفيذ الأمر n <version>
لتنزيل إصدار Node.js وتثبيته. إذا تم تنزيل <version>
بالفعل، فسيتم تثبيت n
من ذاكرة التخزين المؤقت الخاصة به.
n 10.16.0
n lts
قم بتنفيذ n
من تلقاء نفسه لعرض الإصدارات التي تم تنزيلها وتثبيت الإصدار المحدد.
$ n
node/4.9.1
ο node/8.11.3
node/10.15.0
Use up/down arrow keys to select a version, return key to install, d to delete, q to quit
(يمكنك أيضًا استخدام j و k لتحديد الإصدار التالي أو السابق بدلاً من استخدام الأسهم أو ctrl+n و ctrl+p .)
إذا لم يتغير إصدار العقدة النشطة بعد التثبيت، فحاول فتح غلاف جديد في حالة رؤية إصدار قديم.
هناك عدة طرق لتحديد إصدار Node.js المستهدف للأوامر n
. تستخدم معظم الأوامر أحدث إصدار مطابق، ويسرد n ls-remote
إصدارات متعددة متطابقة.
يمكن أن تكون أرقام الإصدارات الرقمية كاملة أو غير كاملة، مع حرف v
بادئ اختياري.
4.9.1
8
: 8.xy الإصداراتv6.1
: إصدارات 6.1.xهناك تسميات لإصدارين مفيدين بشكل خاص:
lts
: أحدث إصدار رسمي للدعم طويل الأمدlatest
current
: أحدث إصدار رسمي توجد تسمية auto
لقراءة الإصدار الهدف من ملف موجود في الدليل الحالي، أو أي دليل أصل. n
يبحث بالترتيب:
.n-node-version
: إصدار على سطر واحد. مخصص ل n
..node-version
: إصدار على سطر واحد. تستخدم بواسطة أدوات متعددة: Node-version-usage.nvmrc
: نسخة على سطر واحد. يستخدم بواسطة nvm
.engine
كما هو موضح أدناه. يبحث ملصق engine
عن ملف package.json
ويقرأ حقل engines
لتحديد Node.js المتوافق. يتطلب إصدارًا مثبتًا من jq
أو node
، ويستخدم npx semver
لحل النطاقات المعقدة.
هناك دعم لتدفقات الإصدار المسماة:
argon
boron
carbon
: أسماء رمزية لتيارات إطلاق LTSيمكن استخدام الأسماء المستعارة لدعم Node.js، على الرغم من أنها تحل ببساطة إلى أحدث إصدار مطابق:
active
lts_active
lts_latest
lts
current
supported
نموذج الإصدار الأخير مخصص لتحديد الإصدارات الأخرى المتاحة باستخدام اسم مجلد التنزيل عن بعد اختياريًا متبوعًا بالإصدار الكامل أو غير الكامل.
nightly
test/v11.0.0-test20180528
rc/10
إزالة بعض الإصدارات المخزنة مؤقتًا:
n rm 0.9.4 v0.10.0
إزالة جميع الإصدارات المخزنة مؤقتًا باستثناء الإصدار المثبت:
n prune
قم بإزالة Node.js المثبتة (لا يؤثر على الإصدارات المخزنة مؤقتًا). يمكن أن يكون هذا مفيدًا للعودة إلى إصدار النظام من العقدة (إذا كنت في موقع مختلف)، أو إذا لم تعد ترغب في استخدام العقدة وnpm، أو تقوم بالتبديل إلى طريقة مختلفة لإدارتهما.
n uninstall
هناك ثلاثة أوامر للعمل مباشرةً مع إصدارات Node.js التي قمت بتنزيلها، دون إعادة التثبيت.
يمكنك إظهار المسار إلى إصدار node
الذي تم تنزيله:
$ n which 6.14.3
/usr/local/n/versions/6.14.3/bin/node
أو قم بتشغيل إصدار node
الذي تم تنزيله باستخدام الأمر n run
:
n run 8.11.3 --debug some.js
أو قم بتنفيذ أمر مع تعديل PATH
بحيث تكون node
و npm
من إصدار Node.js الذي تم تنزيله. (ملحوظة: تشغيل npm
بهذه الطريقة سيستخدم وحدات العقدة العامة من مجلد إصدار العقدة المستهدفة.)
n exec 10 my-script --fast test
n exec lts zsh
عادةً ما يتضمن تثبيت Node.js أيضًا npm
و npx
و corepack
، ولكن قد ترغب في الحفاظ على إصداراتك الحالية (خاصة الأحدث) باستخدام --preserve
:
$ npm install -g npm@latest
...
$ npm --version
6.13.7
# Node.js 8.17.0 includes (older) npm 6.13.4
$ n -p 8
installed : v8.17.0
$ npm --version
6.13.7
يمكنك جعل هذا الإعداد الافتراضي عن طريق تعيين متغير البيئة إلى سلسلة غير فارغة. توجد متغيرات بيئة منفصلة لـ npm
و corepack
:
export N_PRESERVE_NPM=1
export N_PRESERVE_COREPACK=1
يمكنك أن تكون صريحًا للحصول على السلوك المطلوب مهما كانت متغيرات البيئة:
n --preserve nightly
n --no-preserve latest
يمكن الحصول على تعليمات سطر الأوامر من n --help
.
قائمة الإصدارات البعيدة المطابقة المتاحة للتنزيل:
n ls-remote lts
n ls-remote latest
n lsr 10
n --all lsr
قائمة الإصدارات التي تم تنزيلها في ذاكرة التخزين المؤقت:
n ls
تنزيل الإصدار إلى ذاكرة التخزين المؤقت:
n download 22
استخدم n
للوصول إلى الإصدارات المخزنة مؤقتًا (التي تم تنزيلها بالفعل) دون توفر الإنترنت.
n --offline 12
قم بإزالة إصدار ذاكرة التخزين المؤقت بعد التثبيت باستخدام --cleanup
. يعد هذا مفيدًا بشكل خاص للتثبيت لمرة واحدة، كما هو الحال في حاوية الإرساء.
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install --cleanup lts
عادةً n run
و n exec
و n which
ستفشل إذا لم يكن الإصدار المستهدف موجودًا بالفعل في ذاكرة التخزين المؤقت. يمكنك إضافة --download
لاستخدام ذاكرة التخزين المؤقت إذا كانت متوفرة أو تنزيلها إذا لزم الأمر:
n --download run 18.3 my-script.js
عرض التشخيصات للمساعدة في حل المشكلات:
n doctor
إذا كنت ترغب في استخدام مرآة Node.js مختلفة لها نفس التخطيط الافتراضي https://nodejs.org/dist/، فيمكنك تعريف N_NODE_MIRROR
.
أحد الأمثلة على ذلك هو للمستخدمين في الصين الذين يمكنهم تحديد:
export N_NODE_MIRROR=https://npmmirror.com/mirrors/node
مثال آخر هو مشروع Node.js غير الرسمي للإنشاءات والذي يحتوي على تنزيلات لبعض المنصات التي لم يتم إتاحتها رسميًا، مثل Armv6l (Raspberry Pi) و32 بت x86.
export N_NODE_MIRROR=https://unofficial-builds.nodejs.org/download/release
قد تحتاج إلى تحديد البنية بشكل صريح إذا لم يتم اكتشافها تلقائيًا بواسطة n
، مثل استخدام musl
libc
على Alpine:
export N_NODE_MIRROR=https://unofficial-builds.nodejs.org/download/release
apk add bash curl libstdc++
n --arch x64-musl install lts
إذا كانت المرآة المخصصة تتطلب مصادقة، فيمكنك إضافة اسم المستخدم وكلمة المرور المشفرين بعنوان URL إلى عنوان URL. على سبيل المثال
export N_NODE_MIRROR=https://encoded-username:encoded-password@host:port/path
يوجد أيضًا N_NODE_DOWNLOAD_MIRROR
لمرآة مختلفة بنفس التخطيط مثل https://nodejs.org/download الافتراضي.
بشكل افتراضي، يختار n
الثنائيات المطابقة لبنية النظام لديك. على سبيل المثال، في نظام 64 بت، سيقوم n
بتنزيل ثنائيات 64 بت.
على جهاز Mac مزود بـ Apple silicon:
n
افتراضيًا هو ثنائيات Arm64 التي تعمل محليًاn
افتراضيًا على ثنائيات x64 التي تعمل في Rosetta 2 يمكنك تجاوز البنية الافتراضية باستخدام الخيار -a
أو --arch
.
على سبيل المثال، أعد تثبيت أحدث إصدار من Node.js مع ثنائيات x64:
n rm current
n --arch x64 current
يتم تنزيل الأمر n
وتثبيته على /usr/local
افتراضيًا، ولكن يمكنك تجاوز هذا الموقع عن طريق تعريف N_PREFIX
. لتغيير الموقع ليقول $HOME/.n
، أضف أسطرًا مثل ما يلي إلى ملف تهيئة الصدفة الخاص بك:
export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH
إذا كنت تريد تخزين التنزيلات في موقع مختلف، فاستخدم N_CACHE_PREFIX
. ولا يؤثر هذا على مكان تثبيت إصدار العقدة النشطة.
يستخدم n
افتراضيًا كرات قطران Node.js المضغوطة xz للتنزيل إذا كان من المحتمل أن يكون القطران على النظام يدعم إلغاء الضغط xz. يمكنك تجاوز الاختيار التلقائي عن طريق تعيين متغير البيئة إلى صفر أو غير صفر:
export N_USE_XZ=0 # to disable
export N_USE_XZ=1 # to enable
يمكنك أن تكون صريحًا للحصول على السلوك المطلوب مهما كان متغير البيئة:
n install --use-xz nightly
n install --no-use-xz latest
باختصار:
N_NODE_MIRROR
: راجع المصدر المخصصN_NODE_DOWNLOAD_MIRROR
: راجع المصدر المخصصN_MAX_REMOTE_MATCHES
لتغيير الحد الأقصى الافتراضي ls-remote
وهو 20 إصدارًا مطابقًاN_PRESERVE_NPM
: راجع الحفاظ على npmN_PRESERVE_COREPACK
: راجع الحفاظ على npm يقوم n
بتنزيل حزمة Node.js المعدة مسبقًا وتثبيتها على بادئة واحدة (على سبيل المثال /usr/local
). يؤدي هذا إلى الكتابة فوق الإصدار السابق. يجب أن يكون مجلد bin
الموجود في هذا الموقع موجودًا في PATH
(على سبيل المثال /usr/local/bin
).
يتم الاحتفاظ بالتنزيلات في مجلد ذاكرة التخزين المؤقت لاستخدامها في عمليات إعادة التثبيت. التنزيلات متاحة أيضًا للاستخدام المحدود باستخدام n which
و n run
و n exec
.
لا تتغير حزم npm
العامة عن طريق التثبيت، باستثناء npm
نفسه الذي يعد جزءًا من تثبيت Node.js.