n
– จัดการเวอร์ชัน Node.js ของคุณแบบโต้ตอบการจัดการเวอร์ชัน Node.js: ไม่มีเชลล์ย่อย, ไม่มีการตั้งค่าโปรไฟล์, ไม่มี API ที่ซับซ้อน, เพียงแค่ ใช้ .
n
– จัดการเวอร์ชัน Node.js ของคุณแบบโต้ตอบ n
ได้รับการสนับสนุนบน macOS, Linux รวมถึงระบบย่อย Windows สำหรับ Linux และระบบที่คล้ายยูนิกซ์อื่นๆ มันถูกเขียนเป็นสคริปต์ 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
โดยตรง หากต้องการติดตั้ง Node.js เวอร์ชัน lts
:
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
เองเป็นเวอร์ชันล่าสุด ดู repo n-install สำหรับรายละเอียดเพิ่มเติม
การเปลี่ยนจาก 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.xyv6.1
: เวอร์ชัน 6.1.xมีป้ายกำกับสำหรับเวอร์ชันที่มีประโยชน์อย่างยิ่งสองเวอร์ชัน:
lts
: การสนับสนุนระยะยาวใหม่ล่าสุดอย่างเป็นทางการlatest
current
: เปิดตัวอย่างเป็นทางการใหม่ล่าสุด มีป้ายกำกับ auto
สำหรับอ่านเวอร์ชันเป้าหมายจากไฟล์ในไดเร็กทอรีปัจจุบันหรือไดเร็กทอรีหลัก n
ค้นหาตามลำดับ:
.n-node-version
: เวอร์ชันในบรรทัดเดียว กำหนดเองเป็น n
.node-version
: เวอร์ชันในบรรทัดเดียว ใช้โดยเครื่องมือหลายอย่าง: การใช้งานโหนดเวอร์ชัน.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
ด้วยวิธีนี้จะใช้ global node_modules จากโฟลเดอร์เวอร์ชันโหนดเป้าหมาย)
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
ค่าเริ่มต้นคือการใช้ Tarball Node.js ที่บีบอัด xz สำหรับการดาวน์โหลด หากเป็นไปได้ว่า tar บนระบบรองรับการบีบอัด 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