มีสภาพแวดล้อมเสมือนสำหรับ node.js หรือไม่


139

ฉันค้นหาหน้าโมดูลวิกิแล้ว แต่ไม่พบสิ่งที่คล้ายกับ Virtualenv (python) หรือ rvm

ใครที่นี่แยก node.js ใน env ของตัวเอง? ฉันไม่ชอบติดตั้ง npm ทั้งระบบ

คำตอบ:


44

หากการมีแพ็กเกจ npm ทั้งระบบเป็นปัญหาหลักของคุณคุณอาจลองใช้คำสั่ง 'บันเดิล' ที่ยอดเยี่ยมกับ npm ใกล้เคียงกับการแช่แข็งอัญมณีหรือการใช้บันเดิลเลอร์ในรางมากกว่า rvm

ง่ายสุด ๆ เพียงสร้างไฟล์ package.json:

{ "name": "yourapp", "version": "0.0.1", "dependencies": {"jade": "0.4.1"}}

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

npm bundle vendor

หรือถ้าเวอร์ชัน npm ของคุณคือ> = 1.0 ให้รัน:

npm install

เพื่อตรึงไว้ในไดเร็กทอรีผู้ขาย จากนั้นใช้:

require.paths.unshift('./vendor');

1
@andho ยังไม่ได้ทดสอบตัวเอง แต่ฉันเข้าใจว่า NPM เวอร์ชันล่าสุดใช้npm installสำหรับสิ่งนี้
Marnen Laibow-Koser

13
ทดสอบและยืนยันตอนนี้ ฉันเชื่อว่าnpm installแทนที่ด้วยnpm bundleNPM 1.0
Marnen Laibow-Koser

186

nodeenv - สภาพแวดล้อมเสมือนจริงสำหรับ Node.js (อนาล็อกvirtualenv )


สิ่งนี้ดูดีในตอนเริ่มต้น แต่ฉันไม่สามารถรับการติดตั้ง npm กับ nodeenv พร้อมกันได้โดยมีการคอมไพล์ node.js (บน osx Lion) อาจเป็นไปได้ว่าฉันสามารถใช้การติดตั้ง nvm และติดตั้ง npm แยกกันสำหรับแต่ละ nodeenv ... เมื่อถึงเวลาที่ฉันคิดว่าจะลองใช้ฉันมีโหนดหลายเวอร์ชันที่ทำด้วยวิธีอื่นแล้ว
Mikael Lepistö

2
สามารถใช้เพื่อติดตั้งภายในสภาพแวดล้อมเสมือน Python ที่มีอยู่เพื่อให้node.jsสภาพแวดล้อมเปิดใช้งานพร้อมกับสภาพแวดล้อม Python ดูnodeenv -p.
naitsirhc

3
nodeenv (จริงๆแล้ว Virtualenv + nodeenv) เหมาะสำหรับผู้ใช้ fish-shell เนื่องจาก nave และอื่น ๆ ไม่รองรับเชลล์อื่น ๆ นอกจาก bash และ zsh
akarca

1
นอกจากนี้ยังมีความเท่าเทียมกันของกระดาษห่อหุ้ม Virtualenv หรือไม่?
vmonteco

25

นอกจากนี้ยังมีระบบการจัดการ Node เวอร์ชันที่สามารถช่วยได้

ลองดู Nave https://github.com/isaacs/nave

NVM สามารถใช้https://github.com/creationix/nvm

นอกจากนี้ยังมีชื่อ n https://github.com/visionmedia/n


1
Nvm ใช้งานได้ดีหากคุณต้องการติดตั้ง node.js และ npm เวอร์ชันต่างๆในเวลาเดียวกัน สำหรับส่วนที่เหลือฉันพบว่ามันเพียงพอที่จะต้องติดตั้งโมดูลที่จำเป็นในไดเรกทอรีโครงการด้วย npm
Mikael Lepistö

2
หากคุณกำลังดูnvmหรือnต้องการสลับอัตโนมัติเมื่อคุณเปลี่ยนไดเรกทอรีโปรดดูที่avn: github.com/wbyoung/avn
wbyoung

1
เท่าที่ฉันเห็น n ไม่ใช่สภาพแวดล้อมเสมือนจริง มันแชร์ไลบรารีที่ติดตั้งทั่วโลกทั้งหมดยกเว้น npm
Yannic Hamann

7

คำตอบของ bxjx นั้นถูกต้องตามแนวคิด อย่างไรก็ตามโปรดทราบว่าคำสั่งบันเดิลไม่ใช้ไดเร็กทอรีอีกต่อไป มันมักจะทิ้งแพ็คเกจลงในnode_modulesโฟลเดอร์เพื่อให้ npm รู้ว่าจะหาได้ที่ไหนในภายหลัง (และสามารถหลีกเลี่ยงการติดตั้งการอ้างอิงซ้ำได้)

วิธีแก้ปัญหาใด ๆ อาจเกี่ยวข้องกับการติดตั้ง npm และ nave "ทั้งระบบ" (นั่นคือในของคุณPATHซึ่งอาจอยู่ที่~ใดที่หนึ่ง) แต่จะติดตั้งเฉพาะการอ้างอิงเฉพาะของคุณในสภาพแวดล้อมเสมือนเท่านั้น

ฉันตอบอย่างละเอียดเพิ่มเติมเกี่ยวกับปัญหา GitHub

tl; dr: กรณีการใช้งานนั้นถูกต้องและเป็นประโยชน์และแม้ว่าส่วนใหญ่จะอยู่ที่นั่น แต่ก็ไม่ได้ให้บริการดีเท่าที่ควร เราควรคิดให้ดีและทำอย่างถูกต้อง


ดูเหมือนว่าปัญหา GitHub จะไม่มีอีกต่อไป มีลิงค์อัพเดทไหม
Drazisil

4

คุณไม่จำเป็นต้องติดตั้งการอ้างอิงทั่วโลกเสมอไป โดยปกติก็แนะนำแล้วเพราะคุณสามารถใช้คำสั่งที่แพคเกจ NPM ให้ แต่ถ้าคุณติดตั้งไว้ในเครื่อง (ในnode_modules) ไดเรกทอรีคุณยังสามารถใช้คำสั่งเหล่านี้พวกเขาเพียงลมขึ้นในnode_modules/.bin/ไดเรกทอรีดังนั้นคุณจะต้องพิมพ์node_modules/.bin/<command>, ซึ่งน่ารำคาญ แต่คุณสามารถเพิ่มเส้นทางนี้ให้กับPATHตัวแปรสภาพแวดล้อมของคุณได้:

export PATH=node_modules/.bin:$PATH

จากนั้นคุณสามารถพิมพ์<command>และใช้งานได้!

มีคำสั่ง npm ที่ส่งคืนเส้นทางสัมบูรณ์ไปยัง.binไดเร็กทอรี:

$ npm bin
/path/to/node_modules/.bin

คำสั่งนี้ยังใช้งานได้เมื่อคุณอยู่ในไดเร็กทอรีย่อยของโปรเจ็กต์โดยจะส่งคืนnode_modules/.binไดเร็กทอรีแรกที่พบในไดเร็กทอรีหลัก

คุณสามารถเพิ่มนามแฝงนี้ใน.bashrcการเพิ่ม.bin/ไดเร็กทอรีของคุณโดยอัตโนมัติPATH:

alias nodebin='export PATH=$(npm bin):$PATH'

ดังนั้นเมื่อคุณอยู่ในไดเร็กทอรีของโปรเจ็กต์ที่มีnode_modules/ไดเร็กทอรีอยู่ในรูทคุณสามารถพิมพ์nodebinและใช้คำสั่งทั้งหมดที่อยู่ใน.bin/ไดเร็กทอรีได้!



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