#script-runner #script #npm #node #package-manager #npm-package #run-command

app nrr

最小化、速度极快的 npm 脚本执行器

18 个版本 (8 个重大更改)

0.9.5 2024 年 8 月 19 日
0.9.4 2024 年 7 月 26 日
0.9.3 2024 年 6 月 25 日
0.8.1 2024 年 2 月 24 日
0.2.0 2023 年 11 月 25 日

#2 in #npm

Download history 10/week @ 2024-04-22 2/week @ 2024-04-29 168/week @ 2024-05-06 19/week @ 2024-05-13 14/week @ 2024-05-20 108/week @ 2024-05-27 14/week @ 2024-06-03 21/week @ 2024-06-10 171/week @ 2024-06-24 10/week @ 2024-07-01 92/week @ 2024-07-22 34/week @ 2024-07-29

每月 126 次下载

GPL-3.0-only

48KB
696

nrr

Crates.io Version Crates.io Total Downloads GitHub Actions Build Workflow Status GitHub Actions Build Workflow Status GitHub License

built with nix

最小化、速度极快的 npm 脚本执行器。

特性安装使用

特性

性能

nrr 初始化和解析脚本的效率比其他包管理器和脚本执行器要快得多。它通过提供尽可能大的功能覆盖范围,同时保持简单和高效,实现了这一点。

nrrnpmyarnpnpmnode --runbundum 执行一个简单的 true 脚本的基准测试
命令 平均值 [ms] 最小值 [ms] 最大值 [ms] 相对值
nrr 2.2 ± 0.3 1.9 7.7 1.00
dum 2.7 ± 0.2 2.4 5.2 1.22 ± 0.17
bun 7.1 ± 0.3 6.5 10.3 3.21 ± 0.40
node--run 41.6 ± 1.8 39.3 49.1 18.80 ± 2.35
npm 261.7 ± 17.1 245.5 292.2 118.36 ± 15.91
yarn 305.7 ± 14.6 295.2 343.9 138.28 ± 17.52
pnpm 502.7 ± 10.7 489.8 522.9 227.40 ± 27.12

在AWS EC2 t4g.micro实例上运行基准测试,使用命令hyperfine --shell=none --warmup=5 --output=pipe --export-markdown=benchmark.md 'npm run dev' -n 'npm' 'yarn run dev' -n 'yarn' 'pnpm run dev' -n 'pnpm' 'node --run dev' -n 'node --run' 'bun run dev' -n 'bun' 'dum run dev' -n 'dum' 'nrr dev' -n 'nrr'

包和脚本元数据显示

nrr提供了比大多数更美观的包详细信息显示和运行命令的显示,而且还把此信息打印到stderr而不是像一些包管理器那样(错误地)打印到stdout

命令执行

除了在package.json中运行你的脚本的常规脚本运行器功能外,nrr还可以在npm包环境中执行任意命令!你可以使用nrr execnrr x命令来执行命令,类似于npxpnpm exec的工作方式(但当然更快)。

请注意,但是,nrr不能运行远程包中的命令!这个功能属于包管理器的范畴,而nrr不是。

[!TIP]

如果你在PATH中创建一个名为nrx的符号链接(或者在Windows上,创建一个名为nrx.exe的硬链接),你可以通过nrx二进制文件执行命令,而无需使用子命令!

脚本列表

在没有参数的情况下运行nrr或运行nrr list子命令,将尝试在当前工作目录及其祖先中查找任何包,并列出从它们提供的脚本,包括名称和命令。

工具兼容性

nrr具有兼容性功能,可以修补npm_execpath,以便像npm-run-all2这样的工具使用它而不是包管理器来运行子脚本。

[!WARNING]

npm_execpath用于非脚本运行目的时,这可能会导致意外行为,因此如果你遇到任何错误,请提交问题。

当使用nrr运行嵌套脚本时,nrr具有专门的行为,在保持最小化和高效的同时打印额外的信息

sveltekit-project@0.0.1
$ run-s lint format:check
sveltekit-project@0.0.1 lint
$$ eslint .

拼写建议

如果您输入脚本名称错误(例如,使用 buils 而不是 build),nrr 将会智能地建议正确的脚本在错误消息中使用来自 strsim 库的 Jaro 相似度算法。

安装

Nix

将来自 github:ryanccn/nrr flake 的覆盖层或软件包添加到您自己的系统 flake。或者,声明式地安装软件包

$ nix profile install 'github:ryanccn/nrr#nrr'

nrr 也可在 Nixpkgs 中作为 nixpkgs#nrr 获得。

安装程序

此安装脚本适用于 Linux 和 macOS,并从 GitHub 发布版下载二进制文件,如果找不到预构建的二进制文件,则回退到 cargo install

$ curl --proto '=https' --tlsv1.2 -fsSL https://nrr.ryanccn.dev | sh

Cargo

nrr 支持 cargo-binstall,如果可能,将从 GitHub 发布版下载二进制文件,而不是从源代码编译 crate。

$ cargo binstall nrr

如果您确实想从源代码编译,请直接使用 Cargo 安装

$ cargo install nrr

或者,如果您想保持最新的版本,请从 Git 仓库使用 Cargo 安装

$ cargo install --git https://github.com/ryanccn/nrr.git

GitHub 发布版

您可以从 最新的 GitHub 发布版 下载为 Linux、macOS 和 Windows 预编译的二进制文件。Linux 二进制文件与 musl 静态链接;Windows 二进制文件需要 MSVC。

使用方法

$ nrr dev
$ nrr run dev
$ nrx eslint --help
$ nrr x eslint --help
$ nrr exec eslint --help
$ nrr
$ nrr list

本节提供了 nrr 命令行功能概述。有关更多选项和信息,请运行 nrr --help

许可协议

GPLv3

依赖关系

~13–24MB
~349K SLoC