What is @antfu/ni?
@antfu/ni is a command-line tool that provides a unified interface for package managers like npm, yarn, and pnpm. It simplifies the process of managing dependencies by automatically detecting the package manager used in a project and running the appropriate commands.
What are @antfu/ni's main functionalities?
Install Dependencies
The `ni` command installs dependencies in the current project. It automatically detects the package manager used (npm, yarn, or pnpm) and runs the corresponding install command.
ni
Add a Dependency
The `ni <package>` command adds a new dependency to the project. It detects the package manager and runs the appropriate command to add the specified package.
ni axios
Remove a Dependency
The `nr <package>` command removes a dependency from the project. It detects the package manager and runs the appropriate command to remove the specified package.
nr axios
Upgrade Dependencies
The `nu` command upgrades all dependencies in the project. It detects the package manager and runs the appropriate command to upgrade the dependencies.
nu
Run Scripts
The `ni run <script>` command runs a script defined in the project's package.json file. It detects the package manager and runs the appropriate command to execute the script.
ni run build
Other packages similar to @antfu/ni
npm
npm is the default package manager for Node.js. It provides a wide range of commands for managing dependencies, running scripts, and more. Unlike @antfu/ni, npm does not automatically detect other package managers.
yarn
Yarn is a fast, reliable, and secure dependency management tool. It offers similar functionalities to npm but with a focus on speed and reliability. Yarn does not provide a unified interface for other package managers like @antfu/ni.
pnpm
pnpm is a fast, disk space-efficient package manager. It uses a unique symlink-based approach to manage dependencies. Like npm and yarn, pnpm does not offer a unified interface for other package managers.
ni
npm i
in a yarn project, again? F**k!
ni - use the right package manager
npm i -g @antfu/ni
ni
npm · yarn · pnpm
ni
- install
ni
ni axios
ni @types/node -D
ni --frozen
ni -g iroiro
nr
- run
nr dev --port=3000
nr
nr -
nx
- execute
nx jest
nu
- upgrade
nu
nu -i
nun
- uninstall
nun axios
nun @types/node -D
nun -g eslint
nci
- clean install
nci
if the corresponding node manager is not present, this command will install it globally along the way.
Change Directory
ni -C packages/foo vite
nr -C playground dev
Config
defaultAgent=npm
globalAgent=npm
export NI_CONFIG_FILE="$HOME/.config/ni/nirc"
How?
ni assumes that you work with lockfiles (and you should)
Before it runs, it will detect your yarn.lock
/ pnpm-lock.yaml
/ package-lock.json
to know current package manager (or packageManager
field in your packages.json), and runs the corresponding commands.