#yarn #npm #bun #pnpm #cli

bin+lib nci

使用正确的包管理器

7 个版本

0.2.0 2024年5月8日
0.1.0 2024年5月5日
0.0.13 2024年5月5日

#291 in 操作系统

MIT 许可证

42KB
965

nci

使用 Rust 和 antfu-collective/ni 启发重写

灵感来源

安装

cargo install nci

ni

npm i 在 yarn 项目中,又是这样!F**k!

ni - 使用正确的包管理器


npm i -g @antfu/ni

npm · yarn · pnpm · bun


ni - 安装

ni

# npm install
# yarn install
# pnpm install
# bun install
ni vite

# npm i vite
# yarn add vite
# pnpm add vite
# bun 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
ni --frozen

# npm ci
# yarn install --frozen-lockfile (Yarn 1)
# yarn install --immutable (Yarn Berry)
# pnpm install --frozen-lockfile
# bun install --no-save
ni -g eslint

# npm i -g eslint
# yarn global add eslint (Yarn 1)
# pnpm add -g eslint
# bun add -g eslint

# this uses default agent, regardless your current working directory

nr - 运行

nr dev --port=3000

# npm run dev -- --port=3000
# yarn run dev --port=3000
# pnpm run dev --port=3000
# bun run dev --port=3000
nr

# interactively select the script to run
# supports https://npmjs.net.cn/package/npm-scripts-info convention
nr -

# rerun the last command

nlx - 下载并执行

nlx vitest

# npx vitest
# yarn dlx vitest
# pnpm dlx vitest
# bunx vitest

nu - 升级

nu

# npm upgrade
# yarn upgrade (Yarn 1)
# yarn up (Yarn Berry)
# pnpm update
# bun update
nu -i

# (not available for npm & bun)
# yarn upgrade-interactive (Yarn 1)
# yarn up -i (Yarn Berry)
# pnpm update -i

nun - 卸载

nun webpack

# npm uninstall webpack
# yarn remove webpack
# pnpm remove webpack
# bun remove webpack
nun -g silent

# npm uninstall -g silent
# yarn global remove silent
# pnpm remove -g silent
# bun remove -g silent

nci - 清理安装

nci

# npm ci
# yarn install --frozen-lockfile
# pnpm install --frozen-lockfile
# bun install --no-save

如果不存在相应的节点管理器,此命令将沿途全局安装它。


na - 代理别名

na

# npm
# yarn
# pnpm
# bun
na run foo

# npm run foo
# yarn run foo
# pnpm run foo
# bun run foo

全局标志

# ?               | Print the command execution depends on the agent
ni vite ?

# -C              | Change directory before running the command
ni -C packages/foo vite
nr -C playground dev

# -v, --version   | Show version number
ni -v

# -h, --help      | Show help
ni -h

配置

; ~/.nirc

; fallback when no lock found
defaultAgent=npm # default "prompt"

; for global installs
globalAgent=npm
# ~/.bashrc

# custom configuration file path
export NI_CONFIG_FILE="$HOME/.config/ni/nirc"
# for Windows

# custom configuration file path in PowerShell accessible within the `$profile` path
$Env:NI_CONFIG_FILE = 'C:\to\your\config\location'

集成

asdf

您还可以通过由 CanRau 维护的第三方 asdf-plugin 安装 ni

# first add the plugin
asdf plugin add ni https://github.com/CanRau/asdf-ni.git

# then install the latest version
asdf install ni latest

# and make it globally available
asdf global ni latest

如何?

ni 假定您使用锁文件(您应该这样做)

在运行之前,它将检测您的 yarn.lock / pnpm-lock.yaml / package-lock.json / bun.lockb 以了解当前包管理器(或 packages.json 中的 packageManager 字段,如果指定),并运行相应的命令。

故障排除

与 PowerShell 冲突

PowerShell 内置了一个别名 ni 用于 New-Item cmdlet。为了在当前 PowerShell 会话中删除此别名以使用该软件包,请使用以下命令

'Remove-Item Alias:ni -Force -ErrorAction Ignore'

如果您想持久化更改,可以将它们添加到 PowerShell 配置文件中。配置文件路径可以通过 $profile 变量访问。ps1 配置文件通常位于以下位置

  • 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

您可以使用以下脚本在shell启动时移除别名,只需将上述命令添加到您的配置文件中即可

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 $profile
if ($profileContent -notcontains $profileEntry) {
  ("`n" + $profileEntry) | Out-File $profile -Append -Force -Encoding UTF8
}

nxnix 已不再可用

我们将 nx/nix 重命名为 nlx 以避免与其他现有工具(如 nxnix)冲突。您始终可以在shell配置文件(如 .zshrc.bashrc 等)中重新为它们设置别名。

alias nx="nlx"
# or
alias nix="nlx"

依赖项

~6–19MB
~222K SLoC