Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork236
💡 Use the right package manager
License
antfu-collective/ni
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
npm i
in a yarn project, again? F**k!
ni - use the right package manager
npm i -g @antfu/ni
ni# npm install# yarn install# pnpm install# bun install# deno install
ni vite# npm i vite# yarn add vite# pnpm add vite# bun add vite# deno add vite
ni @types/node -D# npm i @types/node -D# yarn add @types/node -D# pnpm add -D @types/node# bun add -d @types/node# deno add -D @types/node
ni -P# npm i --omit=dev# yarn install --production# pnpm i --production# bun install --production# (deno not supported)
ni --frozen# npm ci# yarn install --frozen-lockfile (Yarn 1)# yarn install --immutable (Yarn Berry)# pnpm install --frozen-lockfile# bun install --frozen-lockfile# deno install --frozen
ni -g eslint# npm i -g eslint# yarn global add eslint (Yarn 1)# pnpm add -g eslint# bun add -g eslint# deno install eslint# this uses default agent, regardless your current working directory
ni -i# interactively select the dependency to install# search for packages by name
nr dev --port=3000# npm run dev -- --port=3000# yarn run dev --port=3000# pnpm run dev --port=3000# bun run dev --port=3000# deno task dev --port=3000
nr# interactively select the script to run# supports https://www.npmjs.com/package/npm-scripts-info convention
nr -# rerun the last command
nr --completion>>~/.bashrc# add completion script to your shell (only bash supported for now)
nlx vitest# npx vitest# yarn dlx vitest# pnpm dlx vitest# bunx vitest# deno run npm:vitest
nup# npm upgrade# yarn upgrade (Yarn 1)# yarn up (Yarn Berry)# pnpm update# bun update# deno upgrade
nup -i# (not available for npm & bun & deno)# yarn upgrade-interactive (Yarn 1)# yarn up -i (Yarn Berry)# pnpm update -i
nun webpack# npm uninstall webpack# yarn remove webpack# pnpm remove webpack# bun remove webpack# deno remove webpack
nun# interactively select# the dependency to remove
nun -m# interactive select,# but with multiple dependencies
nun -g silent# npm uninstall -g silent# yarn global remove silent# pnpm remove -g silent# bun remove -g silent# deno uninstall -g silent
nci# npm ci# yarn install --frozen-lockfile# pnpm install --frozen-lockfile# bun install --frozen-lockfile# deno cache --reload
if the corresponding node manager is not present, this command will install it globally along the way.
na# npm# yarn# pnpm# bun# deno
na run foo# npm run foo# yarn run foo# pnpm run foo# bun run foo# deno task foo
# ? | Print the command execution depends on the agentni vite?# -C | Change directory before running the commandni -C packages/foo vitenr -C playground dev# -v, --version | Show version numberni -v# -h, --help | Show helpni -h
; ~/.nirc; fallback when no lock founddefaultAgent=npm# default "prompt"; for global installsglobalAgent=npm
# ~/.bashrc# custom configuration file pathexport NI_CONFIG_FILE="$HOME/.config/ni/nirc"# environment variables have higher priority than config file if presentedexport NI_DEFAULT_AGENT="npm"# default "prompt"export NI_GLOBAL_AGENT="npm"
#forWindows#customconfigurationfilepathinPowerShellaccessiblewithinthe`$profile`path$Env:NI_CONFIG_FILE='C:\to\your\config\location'
You can also install ni via the3rd-party asdf-plugin maintained byCanRau
# first add the pluginasdf plugin add ni https://github.com/CanRau/asdf-ni.git# then install the latest versionasdf install ni latest# and make it globally availableasdf global ni latest
ni assumes that you work with lock-files (and you should).
Beforeni
runs the command, it detects youryarn.lock
/pnpm-lock.yaml
/package-lock.json
/bun.lock
/bun.lockb
/deno.json
/deno.jsonc
to know the current package manager (orpackageManager
field in your packages.json if specified) using thepackage-manager-detector package and then runs the correspondingpackage-manager-detector command.
PowerShell comes with a built-in aliasni
for theNew-Item
cmdlet. To remove the alias in your current PowerShell session in favor of this package, use the following command:
'Remove-Item Alias:ni -Force -ErrorAction Ignore'
If you want to persist the changes, you can add them to your PowerShell profile. The profile path is accessible within the$profile
variable. The ps1 profile file can normally be found at
- PowerShell 5 (Windows PowerShell):
C:\Users\USERNAME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
- PowerShell 7:
C:\Users\USERNAME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
- VSCode:
C:\Users\USERNAME\Documents\PowerShell\Microsoft.VSCode_profile.ps1
You can use the following script to remove the alias at shell start by adding the above command to your profile:
if (-not (Test-Path$profile)) {New-Item-ItemType File-Path (Split-Path$profile)-Force-Name (Split-Path$profile-Leaf)}$profileEntry='Remove-Item Alias:ni -Force -ErrorAction Ignore'$profileContent=Get-Content$profileif ($profileContent-notcontains$profileEntry) { ("`n"+$profileEntry)|Out-File$profile-Append-Force-Encoding UTF8}
We renamednx
/nix
andnu
tonlx
andnup
to avoid conflicts with the other existing tools -nx,nix andnushell. You can always alias them back on your shell configuration file (.zshrc
,.bashrc
, etc).
alias nx="nlx"# oralias nix="nlx"# oralias nu="nup"
About
💡 Use the right package manager
Topics
Resources
License
Code of conduct
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.