Repolode
ekalinin

ekalinin/nodeenv

A Python tool that creates isolated Node.js virtual environments, each with its own Node.js and npm install, optionally integrated with a Python virtualenv.

Open-source alternative to:nvm

Stars
1,796
Forks
230
Open issues
26
Last commit
4 days ago

What is it?

nodeenv creates isolated Node.js environments. Each environment has its own installation directory and does not share global npm packages with other nodeenv environments, similar in spirit to Python's virtualenv.

It can download prebuilt Node.js binaries or compile from source, and supports choosing versions by exact number, semver range, or the keywords latest, lts and system. Installs can be driven by requirements files, and an existing Python virtual environment can be extended with a Node.js environment using the -p option, so Python and JavaScript tooling live side by side.

The tool also covers mirror configuration for restricted networks, a ~/.nodeenvrc config file for defaults, and a freeze command that records installed packages for repeatable setups.

Key features

  • 01Creates isolated Node.js environments with their own installation directories.
  • 02Installs prebuilt Node.js binaries by default, or compiles from source on Unix.
  • 03Accepts exact versions, semver ranges, and keywords like lts and latest.
  • 04Integrates with an existing Python virtualenv via the -p option.
  • 05Installs npm packages from requirements files, globally or into node_modules.
  • 06Supports custom download mirrors, including local directories and authenticated URLs.

Use cases

  • Running a Python project that also needs a specific Node.js version for build tooling.
  • Setting up reproducible Node.js and npm package versions across machines.
  • Installing Node.js on hosts where a mirror or local package copy is required.
  • Keeping several Node.js versions side by side for testing compatibility.

Quick start

  1. 1

    Install nodeenv globally with pipx

    pipx install nodeenv
  2. 2

    Create a Node.js environment named env

    nodeenv env
  3. 3

    Activate the new environment

    . env/bin/activate

Things to know

  • The license is listed as NOASSERTION, so check the repository for license terms before use.
  • Building Node.js from source needs libssl-dev and, for versions older than 13, a python2 command.

Topics

FAQ

What is nodeenv?
A Python tool that creates isolated Node.js virtual environments, each with its own Node.js and npm install, optionally integrated with a Python virtualenv. nodeenv creates isolated Node.js environments. Each environment has its own installation directory and does not share global npm packages with other nodeenv environments, similar in spirit to Python's virtualenv.
Is nodeenv free to use? What license does it have?
nodeenv is open source under the Other license. Check the license terms before using it in commercial products.
Is nodeenv still maintained?
Actively maintained. The last commit to nodeenv was on Nov 2, 2026.
What can I use nodeenv for?
Running a Python project that also needs a specific Node.js version for build tooling. Setting up reproducible Node.js and npm package versions across machines. Installing Node.js on hosts where a mirror or local package copy is required. Keeping several Node.js versions side by side for testing compatibility.
How do I install nodeenv?
Install nodeenv globally with pipx: pipx install nodeenv Create a Node.js environment named env: nodeenv env Activate the new environment: . env/bin/activate
Where can I get nodeenv?
The source code and installation instructions are on GitHub: https://github.com/ekalinin/nodeenv

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects

A CLI that wraps npm publish with pre-release checks, version bumping, git tagging, tests and pushes, so releases are done in one interactive run.

Developer Tools#npm#cli#publish
7.7K+1 this week314JavaScriptMITWell maintainedUpdated 14 days ago