2010-09-06 7 views
104

Tôi đã tìm kiếm trang mô-đun wiki, nhưng tôi không thể tìm thấy bất kỳ thứ gì tương tự như virtualenv (python) hoặc rvm.có môi trường ảo cho node.js không?

Bất kỳ ai ở đây đều tách node.js trong env riêng của họ? Tôi thực sự không muốn cài đặt npm toàn hệ thống.

Trả lời

29

Nếu có gói npm rộng hệ thống là vấn đề chính của bạn, thì có thể xem xét sử dụng lệnh 'bó' rất mát mẻ với npm. Điều này là gần gũi hơn với đá quý đóng băng hoặc sử dụng bundler trong đường ray, chứ không phải là rvm.

Thật dễ dàng. Chỉ cần tạo một file package.json:

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

và sau đó chạy:

npm bundle vendor 

hoặc nếu phiên bản NPM của bạn là> = 1.0 chạy:

npm install 

đóng băng vào thư mục nhà cung cấp . và sau đó sử dụng:

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

gói npm không hoạt động. Không được công nhận là một lệnh – andho

+1

@andho Chưa tự mình thử nghiệm, nhưng tôi hiểu rằng các phiên bản gần đây của NPM chỉ đơn giản là sử dụng 'npm install' cho việc này. –

+11

Đã kiểm tra và xác nhận ngay bây giờ. 'npm install' đã thay thế' npm bundle' thành NPM 1.0, tôi tin. –

17

Ngoài ra còn có một số hệ thống quản lý phiên bản nút có thể trợ giúp.

Check-out Nave https://github.com/isaacs/nave

NVM cũng có thể được sử dụng https://github.com/creationix/nvm

Ngoài ra còn có một gọi là n câu trả lời https://github.com/visionmedia/n

+1

Nvm hoạt động tốt nếu bạn chỉ muốn có các phiên bản khác nhau của node.js và npm được cài đặt cùng một lúc. Đối với phần còn lại tôi tìm thấy nó đủ để có các mô-đun cần thiết được cài đặt vào thư mục dự án với npm. –

+1

Nếu bạn đang tìm kiếm 'nvm' hoặc' n' và muốn tự động chuyển đổi khi bạn thay đổi thư mục, hãy xem 'avn': https://github.com/wbyoung/avn – wbyoung

7

bxjx là khái niệm chính xác. Tuy nhiên, xin lưu ý rằng lệnh bó không còn mất một thư mục nữa. Nó luôn luôn thả các gói vào thư mục node_modules, để npm biết nơi để tìm chúng sau này (và có thể tránh các phụ thuộc cài đặt đôi).

Bất kỳ giải pháp có thể sẽ liên quan đến việc cài đặt NPM và gian giữa "trên toàn hệ thống" (có nghĩa là, trong PATH của bạn, mà có thể là trong ~ nơi nào đó), nhưng sau đó chỉ cài đặt phụ thuộc cụ thể của bạn trong môi trường ảo.

Tôi trả lời kỹ hơn on the github issue.

tl; dr: Trường hợp sử dụng hợp lệ và hữu ích và trong khi hầu hết ở đó, nó không được phục vụ tốt như nó có thể. Chúng ta nên chắc chắn để suy nghĩ và làm điều đó đúng.

166

nodeenv - môi trường ảo cho Node.js (Analog virtualenv)

+0

Điều này có vẻ tuyệt vời khi bắt đầu, nhưng tôi không thể cài đặt npm được thực hiện với nodeenv cùng lúc với node.js được biên dịch (trên osx Lion). Có lẽ tôi chỉ có thể sử dụng nvm cài đặt và cài đặt npm riêng biệt cho mỗi nodeenv ... bởi thời gian tôi nghĩ đến việc thử nó tôi đã có nhiều phiên bản nút đã được thực hiện với các phương tiện khác. –

+2

Có thể được sử dụng để cài đặt _within_ môi trường ảo Python hiện có, để môi trường 'node.js' được kích hoạt cùng với môi trường Python. Xem ['nodeenv -p'] (https://github.com/ekalinin/nodeenv). – naitsirhc

+2

nodeenv (thực sự là virtualenv + nodeenv) cũng phù hợp với người dùng cá-vỏ vì nave và những người khác không hỗ trợ bất kỳ shell nào khác ngoài bash và zsh. – akarca

1

Bạn không luôn luôn cần phải cài đặt phụ thuộc trên toàn cầu. Thông thường nó được khuyến khích bởi vì sau đó bạn có thể sử dụng các lệnh một gói npm cung cấp, nhưng nếu bạn cài đặt nó cục bộ (trong thư mục node_modules), bạn cũng có thể sử dụng các lệnh này, chúng chỉ cuộn lên trong thư mục node_modules/.bin/, vì vậy bạn sẽ phải gõ node_modules/.bin/<command>, đó là gây phiền nhiễu, nhưng bạn tất nhiên có thể thêm con đường này để biến PATH môi trường của bạn:

export PATH=node_modules/.bin:$PATH 

Sau đó, bạn có thể chỉ cần gõ <command> và nó hoạt động!

Có thực sự là một lệnh NPM mà trả về một đường dẫn tuyệt đối đến .bin thư mục:

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

Lệnh này cũng làm việc khi bạn đang ở trong một thư mục con của dự án, nó sẽ trả lại node_modules/.bin thư mục đầu tiên mà nó tìm thấy trong thư mục chính của nó.

Bạn có thể thêm bí danh này trong .bashrc của bạn để tự động thêm thư mục .bin/ để bạn PATH:

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

Vì vậy, khi bạn đang ở trong một thư mục của một dự án mà có một thư mục node_modules/ trong thư mục gốc, bạn có thể nhập nodebin và sau đó bạn có thể sử dụng tất cả các lệnh nằm trong thư mục .bin/!

0

Tôi nghĩ hoàn toàn không có ý nghĩa khi làm việc trên môi trường nút mà không cần nút đã cài đặt. Nó giống như bạn đã không cài đặt python và pip khi bạn muốn làm việc trên một dự án python! Tất nhiên để sử dụng virtualenv và virtualenvwrapper, pre-require là python.
Nếu bạn muốn làm việc trên một dự án Node, thật là bình thường khi cài đặt nút và npm ít nhất.
Nếu bạn chỉ muốn chạy một dự án python trên web (ví dụ với Django), bạn có thể sử dụng phiên bản xây dựng của tệp javascript và tải tệp này vào dự án của bạn.