• Stars
    star
    1,634
  • Rank 28,505 (Top 0.6 %)
  • Language
    Python
  • License
    Other
  • Created over 13 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Virtual environment for Node.js & integrator with virtualenv

Node.js virtual environment

nodeenv (node.js virtual environment) is a tool to create isolated node.js environments.

It creates an environment that has its own installation directories, that doesn't share libraries with other node.js virtual environments.

Also the new environment can be integrated with the environment which was built by virtualenv (python).

If you use nodeenv feel free to add your project on wiki: Who-Uses-Nodeenv.

https://travis-ci.org/ekalinin/nodeenv.svg?branch=master

Install

Global installation

You can install nodeenv globally with easy_install:

$ sudo easy_install nodeenv

or with pip:

$ sudo pip install nodeenv

or on Debian using dpkg:

$ ln -s debian-upstream debian
$ dpkg-buildpackage -uc -us -b
$ sudo dpkg -i $(ls -1rt ../nodeenv_*.deb | tail -n1)

Local installation

If you're using virtualenv then you can install nodeenv via pip/easy_install inside any virtual environment built with virtualenv:

$ virtualenv env
$ . env/bin/activate
(env) $ pip install nodeenv
(env) $ nodeenv --version
0.6.5

If you want to work with the latest version of the nodeenv you can install it from the github repository:

$ git clone https://github.com/ekalinin/nodeenv.git
$ ./nodeenv/nodeenv.py --help

or with pip:

$ pip install -e git+https://github.com/ekalinin/nodeenv.git#egg=nodeenv

Dependency

For nodeenv

  • python (2.6+, 3.5+, or pypy)
  • make
  • tail

For node.js

  • libssl-dev

Usage

Basic

Create new environment:

$ nodeenv env

Activate new environment:

$ . env/bin/activate

Check versions of main packages:

(env) $ node -v
v0.10.26

(env) $ npm -v
1.4.3

Deactivate environment:

(env) $ deactivate_node

Advanced

Get available node.js versions:

$ nodeenv --list
0.0.1   0.0.2   0.0.3   0.0.4   0.0.5   0.0.6   0.1.0
0.1.2   0.1.3   0.1.4   0.1.5   0.1.6   0.1.7   0.1.8
0.1.10  0.1.11  0.1.12  0.1.13  0.1.14  0.1.15  0.1.16
0.1.18  0.1.19  0.1.20  0.1.21  0.1.22  0.1.23  0.1.24
0.1.26  0.1.27  0.1.28  0.1.29  0.1.30  0.1.31  0.1.32
0.1.90  0.1.91  0.1.92  0.1.93  0.1.94  0.1.95  0.1.96
0.1.98  0.1.99  0.1.100 0.1.101 0.1.102 0.1.103 0.1.104
0.2.1   0.2.2   0.2.3   0.2.4   0.2.5   0.2.6   0.3.0
0.3.2   0.3.3   0.3.4   0.3.5   0.3.6   0.3.7   0.3.8
0.4.1   0.4.2   0.4.3   0.4.4   0.4.5   0.4.6

Install node.js "0.4.3" without ssl support with 4 parallel commands for compilation and npm.js "0.3.17":

$ nodeenv --without-ssl --node=0.4.3 --npm=0.3.17 --with-npm --jobs=4 env-4.3

Install node.js from the source:

$ nodeenv --node=0.10.25 --source env-0.10.25

Install node.js from a mirror:

$ nodeenv --node=10.19.0 --mirror=https://npm.taobao.org/mirrors/node

It's much faster to install from the prebuilt package than Install & compile node.js from source:

$ time nodeenv --node=0.10.25 --prebuilt env-0.10.25-prebuilt
 + Install node.js (0.10.25) ... done.

real    0m6.928s
user    0m0.408s
sys     0m1.144s

$ time nodeenv --node=0.10.25 --source env-0.10.25-src
 + Install node.js (0.10.25) ... done.

real    4m12.602s
user    6m34.112s
sys     0m30.524s

Create a new environment with the system-wide node.js:

$ nodeenv --node=system

Saving the versions of all installed packages to a file:

$ . env-4.3/bin/activate
(env-4.3)$ npm install -g express
(env-4.3)$ npm install -g jade
(env-4.3)$ freeze ../prod-requirements.txt

If you want to list locally installed packages use -l option:

(env-4.3)$ freeze -l ../prod-requirements.txt

Create an environment from a requirements file:

$ nodeenv --requirements=../prod-requirements.txt --jobs=4 env-copy

Requirements files are plain text files that contain a list of packages to be installed. These text files allow you to create repeatable installations. Requirements file example:

$ cat ../prod-requirements.txt
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

If you already have the python virtualenv tool, and want to use nodeenv and virtualenv in conjunction, then you should create (or activate) the python virtual environment:

# in case of using virtualenv_wrapper
$ mkvirtualenv my_env

# in case of using virtualenv
$ . my_env/bin/activate

and add a node virtual environment to this existing new_venv:

$ nodeenv -p

If you need to set the path to make used to build node:

$ nodeenv -m /usr/local/bin/gmake ENV

That's all. Now, all your node.js modules will be installed into your virtual environment:

$ workon my_env
$ npm install -g coffee-script
$ which coffee
/home/monty/virtualenvs/my_env/bin/coffee

Creating a virtual environment with a custom prompt:

$ nodeenv --node=12.18.2 --prompt="(myenv)" nodeenv

If environment's directory already exists then you can use --force option:

$ nodeenv --requirements=requirements.txt --jobs=4 --force env

If you already have an environment and want to update packages from requirements file you can use --update option:

$ . env-4.3/bin/activate
(env-4.3)$ nodeenv --requirements=requirements.txt --update env-4.3

If you want to call node from environment without activation then you should use shim script:

$ ./env-4.3/bin/shim --version
v0.4.3

Configuration

You can use the INI-style file ~/.nodeenvrc to set default values for many options, the keys in that file are the long command-line option names.

These are the available options and their defaults:

[nodeenv]
node = 'latest'
npm = 'latest'
with_npm = False
jobs = '2'
without_ssl = False
debug = False
profile = False
make = 'make'
prebuilt = True
ignore_ssl_certs = False
mirror = None

Alternatives

There are several alternatives that create isolated environments:

  • nave - Virtual Environments for Node. Nave stores all environments in one directory ~/.nave. Can create per node version environments using nave use envname versionname. Can not pass additional arguments into configure (for example --without-ssl) Can't run on windows because it relies on bash.
  • nvm - Node Version Manager. It is necessarily to do nvm sync for caching available node.js version. Can not pass additional arguments into configure (for example --without-ssl)
  • virtualenv - Virtual Python Environment builder. For python only.

LICENSE

BSD / LICENSE

More Repositories

1

github-markdown-toc

Easy TOC creation for GitHub README.md
Shell
3,104
star
2

sitemap.js

Sitemap-generating framework for node.js
TypeScript
1,577
star
3

Dockerfile.vim

Vim syntax file & snippets for Docker's Dockerfile
Vim Script
692
star
4

github-markdown-toc.go

Easy TOC creation for GitHub README.md (in go)
Go
486
star
5

envirius

Universal Virtual Environments Manager
Shell
330
star
6

typogr.js

Typography utils for javascript
JavaScript
296
star
7

nodeguide.ru

nodeguide.ru
CSS
176
star
8

awsping

Console tool to check the latency to each Amazon EC2 region
Go
156
star
9

pip-bash-completion

bash autocompletion for pip
Shell
77
star
10

robots.js

Parser for robots.txt for node.js
JavaScript
65
star
11

operating-systems-three-easy-pieces-pdf

Tool for single pdf creation from http://ostep.org
Python
34
star
12

rust-bookmarks

Bookmarks about rust programming language
14
star
13

erlang-libs

Listing of useful erlang libraries
JavaScript
8
star
14

btxer

Simple bitcoin transactions tracker
Go
8
star
15

docker-uptime

A Dockerfile that installs the latest mongodb, nodejs and uptime
Shell
7
star
16

docker-munin-nginx

A Dockerfile that installs munin, nginx, and sshd
Shell
5
star
17

docker-sentry-postgres

A Dockerfile that installs sentry, postgres, and sshd
Python
5
star
18

virtualenv-bash-completion

bash completion for virtualenv
3
star
19

veco

Shell wrapper for the most popular version control systems
Shell
3
star
20

algo.rs

Rust
2
star
21

erlang-iptables

Simple Erlang wrapper to iptables
Erlang
2
star
22

pbvm

Protocol Buffers Version Manager
Go
2
star
23

flask-noextref

Provides support for hiding external URL for Flask based applications.
Python
2
star
24

eppi

Erlang based Python Package Index
Erlang
2
star
25

envirius.rs

envirius in Rust
Rust
2
star
26

ekalinin

Personal repo
1
star
27

enviriusx

Universal Virtual Environments Manager
Go
1
star
28

envirius.hs

Universal Virtual Environments Manager in Haskell
Haskell
1
star
29

sis

Simple Image Server
Go
1
star
30

lyseru

Python
1
star
31

cluedo-junior-logs

Logs for cluedo junior game
HTML
1
star
32

marktime.py

Python stopwatch module for humans.
Python
1
star
33

debianworld.ru

Makefile
1
star