Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zhazhazhu/ni
๐ก Use the right package manager (Rust)
https://github.com/zhazhazhu/ni
antfu antfu-ni bun cli ni npack npm package-manager pnpm rust yarn
Last synced: 22 days ago
JSON representation
๐ก Use the right package manager (Rust)
- Host: GitHub
- URL: https://github.com/zhazhazhu/ni
- Owner: zhazhazhu
- License: mit
- Created: 2023-12-14T17:54:03.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-03-14T02:36:33.000Z (8 months ago)
- Last Synced: 2024-03-15T02:40:07.856Z (8 months ago)
- Topics: antfu, antfu-ni, bun, cli, ni, npack, npm, package-manager, pnpm, rust, yarn
- Language: Rust
- Homepage: https://crates.io/crates/npack
- Size: 154 KB
- Stars: 6
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ni
**ni** - use the right package manager
#### Rewrite using Rust language, no runtime, no dependencies, can be installed and used, refer to @antfu/ni, specific usage should be consistent with @antfu/ni
### [@antfu/ni](https://github.com/antfu/ni)
# Install
## Using Cargo (Linux/macOS/Windows)
```bash
cargo install npack
```## Using a script (macOS/Linux)
For bash, zsh and fish shells, there's an automatic installation script.
First ensure that curl and unzip are already installed on you operating system. Then execute:
```bash
curl https://ni.zhazhazhu.me/install.sh | bash
```
### `ni` - install
```bash
ni# npm install
# yarn install
# pnpm install
# bun install
``````bash
ni vite# npm i vite
# yarn add vite
# pnpm add vite
# bun add vite
``````bash
ni @types/node -D# npm i @types/node -D
# yarn add @types/node -D
# pnpm add -D @types/node
# bun add -d @types/node
``````bash
ni --frozen# npm ci
# yarn install --frozen-lockfile (Yarn 1)
# yarn install --immutable (Yarn Berry)
# pnpm install --frozen-lockfile
# bun install --no-save
``````bash
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` - run
```bash
nr dev --port=3000# npm run dev -- --port=3000
# yarn run dev --port=3000
# pnpm run dev --port=3000
# bun run dev --port=3000
``````bash
nr# interactively select the script to run
# supports https://www.npmjs.com/package/npm-scripts-info convention
``````bash
nr -# rerun the last command
```
### `nlx` - download & execute
```bash
nlx vitest# npx vitest
# yarn dlx vitest
# pnpm dlx vitest
# bunx vitest
```
### `nu` - upgrade
```bash
nu# npm upgrade
# yarn upgrade (Yarn 1)
# yarn up (Yarn Berry)
# pnpm update
# bun update
``````bash
nu -i# (not available for npm & bun)
# yarn upgrade-interactive (Yarn 1)
# yarn up -i (Yarn Berry)
# pnpm update -i
```
### `nun` - uninstall
```bash
nun webpack# npm uninstall webpack
# yarn remove webpack
# pnpm remove webpack
# bun remove webpack
``````bash
nun -g silent# npm uninstall -g silent
# yarn global remove silent
# pnpm remove -g silent
# bun remove -g silent
```
### `nci` - clean install
```bash
nci# npm ci
# yarn install --frozen-lockfile
# pnpm install --frozen-lockfile
# bun install --no-save
```if the corresponding node manager is not present, this command will install it globally along the way.
### `na` - agent alias
```bash
na# npm
# yarn
# pnpm
# bun
``````bash
na run foo# npm run foo
# yarn run foo
# pnpm run foo
# bun run foo
```
### Global Flags
```bash
# ? | 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
```
### Config
```ini
; ~/.nirc; fallback when no lock found
defaultAgent=npm # default "prompt"; for global installs
globalAgent=npm
``````bash
# ~/.bashrc# custom configuration file path
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` / `bun.lockb` to know current package manager (or `packageManager` field in your packages.json if specified), and runs the [corresponding commands](https://github.com/antfu/ni/blob/main/src/agents.ts).
### Trouble shooting
#### Conflicts with PowerShell
PowerShell comes with a built-in alias `ni` for the `New-Item` cmdlet. To remove the alias in your current PowerShell session in favor of this package, use the following command:
```PowerShell
'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:
```PowerShell
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
}
```#### `nx` and `nix` is no longer available
We renamed `nx`/`nix` to `nlx` to avoid conflicts with the other existing tools - [nx](https://nx.dev/) and [nix](https://nixos.org/). You can always alias them back on your shell configuration file (`.zshrc`, `.bashrc`, etc).
```bash
alias nx="nlx"
# or
alias nix="nlx"
```