npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

nodeselektor

v0.14.0

Published

Utility to help manage multiple version of nodejs on a system

Downloads

40

Readme

nodeselektor

Usage

# Install nodeselektor
npm i -g nodeselektor

# nodeselektor is not global
# but rather set on a per-directory
# (including subdirectories) basis

cd /nodeproject

# Configure the path to the node version
# you would like to use in this project

ns-use /path/to/node/4.3.3

# Install modules using
# /path/to/node/4.3.3/bin/node and
# /path/to/node/4.3.3/bin/npm
# will delete the `node_modules` if the
# previous version was not compatible
ns-npm install

# Switch to a different version of node
# install production dependencies
# `force` will perform an npm install whether or not
# the node modules version has changed
ns-use /path/to/node/5.1.1

# Install modules using
# /path/to/node/5.1.1/bin/node and
# /path/to/node/5.1.1/bin/npm
# Will delete the `node_modules` since
# it's incompatible
ns-npm install

# Use the configured node
ns index.js
# -> /path/to/node/4.3.3/bin/node index.js

# Print out the current environment
ns-env 

# Note that `ns` works on the script's directory,
# not the current working directory, so calling
# a script from another directory will work
# correctly

cd /
ns /nodeproject/index.js
# -> /path/to/node/4.3.3/bin/node /nodeproject/index.js

Why not use nvm?

nvm is great for a development environment, but it's less suited to server environments. It's implemented as a set of bash functions, which makes it difficult to use from cron scripts, init scripts and upstart. nodeselektor is primarily designed to run in a server environment, although it can be used in a development environment too.

  • nodeselektor does not use subshells
  • nodeselektor does not rely on .bash_profile or any other recipes
  • nodeselektor will exec the resolved node process, so you don't get unnecessary shell processes hanging around

How does it work

nodeselektor writes a file alongside the module's package.json, called .node-selektor. This typically looks something like:

; node-selektor configuration file
; do not check this into source control
; add it to .gitignore
node_path=/Users/andrewn/.nvm/v0.10.36
node_modules_version=11

node_path is the path to the nodejs installation that this project should use to run. node_modules_version refers to the moduel version (process.versions.modules) which was used during the last ns-npm-reinit run. This lets nodeselektor figure out whether to rebuild the node_modules directory for native modules.