# What changed in nodeenv

> 33 changes in nodeenv 1 from its official release notes, upgrade guides and advisories: 1 breaking, 5 new APIs and options. Each one cited. Sources checked 2026-11-13. HTML: https://unstale.sh/pypi/nodeenv/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## nodeenv 1

### Breaking changes

- Python support metadata and runtime are aligned at Python 3.10+. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)

### New APIs and options

- nodeenv can print shell completion scripts with shtab. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)
- Certifi certificates can optionally be used. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
- Keeps npm configuration inside the environment. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
- Local packages can be installed from a requirements file. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
- Uses system Node when available. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)

### Performance

- The node.js zip archive is unpacked in parallel. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)

### Behavior and default changes

- Checks whether activate is called as a script. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
- Accepts npm-style semver ranges. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
- The posix activate script is written on Windows for use with git-bash. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
- The src directory is cleaned by default. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)

### Fixes and other changes

- Fish activation now preserves the environment. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)
- Fish activation no longer puts ^/dev/null on PATH. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)
- Broken node downloads are retried, and stalls no longer hang. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)
- Configuration parsing now reads quoted values and mirror credentials. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)
- When interpolation fails, a configuration value is read raw. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)
- Bad configuration references raise an error again. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)
- Using -p no longer puts the virtual environment bin directory on PATH twice. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)
- On Windows, npm is installed from the registry tarball. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)
- activate.bat and Activate.ps1 now point npm_config_prefix at the environment. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)
- Prebuilt installs now ignore source trees. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)
- Glob characters in prebuilt paths are escaped. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)
- Building node from source no longer requires Python 2. (1.12.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0)
- Selecting latest or version ranges now skips Node.js prereleases. (1.11.1) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.12.0), [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.1)
- Can be sourced by zsh. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
- Reports the URL and proxy instead of a traceback when a download fails. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
- Reads npm's parseable listing. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
- Reports a missing Node archive instead of a traceback. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
- Detects musl regardless of the host triplet vendor. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
- Links nodejs.exe without using mklink. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
- No longer reinstalls Node when it is already present. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
- Can target a virtualenv where nodeenv is not installed. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
- On Windows, Python virtualenv scripts remain under the target virtualenv. (1.11.0) — [release notes](https://github.com/ekalinin/nodeenv/releases/tag/1.11.0)
