DEV Community

Cover image for Say Goodbye to Package Manager Chaos with ni
Yoav Ganbar for Builder.io

Posted on • Originally published at builder.io

4

Say Goodbye to Package Manager Chaos with ni

Have you ever found yourself working on multiple projects that use different package managers and accidentally run the wrong one in the wrong project?

This can create a mess of conflicting lock files and dependencies, causing wasted time. Fortunately, there is a solution to this problem: ni.

ni is an uncomplicated yet powerful tool that lets you run the right package manager for any project without having to remember which one it uses. This blog post explains how to use ni and its various commands.

Installing NI

To install ni, run the following command in your terminal:

npm i -g @antfu/ni
Enter fullscreen mode Exit fullscreen mode

The -g flag installs it globally so you can use it across all of your projects.

Using NI

ni has several commands that make it easier to use the correct package manager in your project. Below, we cover the list of most common commands in detail.

ni to install packages

The ni command installs packages using the correct package manager for your project. To use it, just run the command followed by the package name.

# Install React, automatically using the correct package manager
# Does `npm install react` for npm, `yarn install react` for yarn, etc
ni react
Enter fullscreen mode Exit fullscreen mode

This command installs React using the correct package manager (npm, yarn, pnpm, or bun).

Use -D for dev dependencies:

# For dev depencencies
ni @types/react -D
Enter fullscreen mode Exit fullscreen mode

Use --frozen to avoid writing to lockfiles:

# Equivalent to npm ci, yarn install --immutable, etc
ni --frozen
Enter fullscreen mode Exit fullscreen mode

nr to run scripts

The nr command runs scripts in your project using the correct package manager. To use it, run the command followed by the script name and any options.

# Run `npm start` in npm, `yarn start` for yarn, etc
nr start
Enter fullscreen mode Exit fullscreen mode

This command runs the start script using the correct package manager.

This also has one handy benefit — you do not need -- to separate args for your script:

# Equivalent of `npm run serve -- --port 8080`, `yarn run serve --port 8080`, etc
nr serve --port 8080
Enter fullscreen mode Exit fullscreen mode

You can also just run nr to interactively choose which script to run:

nix to execute packages

The nix command executes packages using the correct package manager for your project. To use it, run the command followed by the package name.

# Equivalent to `npx jest` in npm, `yarn dlx jest` in yarn, etc
nix jest
Enter fullscreen mode Exit fullscreen mode

This command executes Jest using the correct package manager.

nu to upgrade packages

The nu command updates outdated packages using the correct package manager for your project. To use it, run the command followed by any options.

# Equivalent to `npm upgrade`, `yarn up`, etc
nu
Enter fullscreen mode Exit fullscreen mode

This command updates all packages to their latest versions using the correct package manager.

nun to uninstall packages

The nun command uninstalls packages using the correct package manager for your project. To use it, run the command followed by the package name.

# Equivalent to `npm uninstall react`, `yarn remove react`, etc
nun react
Enter fullscreen mode Exit fullscreen mode

This command uninstall React using the correct package manager.

Change directory with -C

You can also use ni to change a directory and run commands in the new directory.

ni -C packages/foo react
Enter fullscreen mode Exit fullscreen mode

This command changes the directory to packages/foo and install React using the correct package manager.

Conclusion

By using ni, you can save yourself a lot of time and avoid the frustration of dealing with conflicting lock files and dependencies. So if you haven't already, give ni a try — you won't regret it!

Sentry blog image

How I fixed 20 seconds of lag for every user in just 20 minutes.

Our AI agent was running 10-20 seconds slower than it should, impacting both our own developers and our early adopters. See how I used Sentry Profiling to fix it in record time.

Read more

Top comments (2)

Collapse
 
equiman profile image
Camilo Martinez

Have you tried swpm?

Collapse
 
maxdevjs profile image
maxdevjs

This tool looks so cool. I just wonder about the nix command naming choice...

Cloudinary image

Optimize, customize, deliver, manage and analyze your images.

Remove background in all your web images at the same time, use outpainting to expand images with matching content, remove objects via open-set object detection and fill, recolor, crop, resize... Discover these and hundreds more ways to manage your web images and videos on a scale.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay