Repository navigation
Releases: bugfix2020/np
Releases · bugfix2020/np
Release list
v1.0.0
np (npm-proxy)
np 不是 npm!
np是一个独立的命令行工具,用于在无法访问内网 npm registry 的情况下,通过外部源(默认 npmmirror)安装项目依赖。
这是什么?
当你在公司内网开发时,npm install 会从内网 registry 拉取依赖包。但如果你在外网环境(比如家里、咖啡厅),npm install 会因为无法访问内网而失败。
np 就是为了解决这个问题而生的。它会:
- 临时切换 npm 的 registry 到外部源
- 执行
npm install - 安装完成后自动恢复原始配置
- 不会修改你的 package.json 和 package-lock.json(除非你添加了新依赖)
下载安装
1. 下载二进制文件
前往 Releases 页面,下载适合你系统的版本:
| 系统 | 文件名 |
|---|---|
| macOS (Intel) | np-darwin-amd64 |
| macOS (M1/M2/ARM) | np-darwin-arm64 |
| Linux (x86_64) | np-linux-amd64 |
| Linux (ARM64) | np-linux-arm64 |
| Windows (x86_64) | np-windows-amd64.exe |
| Windows (ARM64) | np-windows-arm64.exe |
2. 安装到系统
macOS / Linux
# 1. 下载后,给文件添加执行权限
chmod +x np-darwin-arm64 # 或你下载的文件名
# 2. 移动到系统目录(推荐)
sudo mv np-darwin-arm64 /usr/local/bin/np
# 验证安装
np --versionWindows
方法一:放到固定目录并添加到 PATH(推荐)
- 在
C:\下创建一个目录,比如C:\tools - 把下载的
np-windows-amd64.exe重命名为np.exe - 把
np.exe移动到C:\tools\ - 添加
C:\tools到系统 PATH:- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」里找到
Path,点击「编辑」 - 点击「新建」,输入
C:\tools - 点击「确定」保存
- 重新打开一个终端,运行
np --version验证
方法二:直接使用完整路径
如果不想配置 PATH,可以直接使用完整路径:
C:\tools\np.exe --version
C:\tools\np.exe i wms方法三:在 WSL 中使用
如果你在 WSL (Windows Subsystem for Linux) 中开发:
# 把 np 复制到 WSL 的 /usr/local/bin/
sudo cp /mnt/c/tools/np-windows-amd64.exe /usr/local/bin/np.exe
chmod +x /usr/local/bin/np.exe
# 验证
np.exe --version使用方法
基本用法
# 全量安装(等同于 npm install)
np
# 或者显式调用
np i
np install安装新包
# 安装单个包到 dependencies
np i wms
# 安装单个包到 devDependencies
np i -D @aws-sdk/types
# 安装多个包
np i wms mws @aws-sdk/types -D
# 指定版本
np i wms@4.2.1初始化本地依赖
# 在项目根目录运行,创建 localDeps 目录
np init使用自定义 registry
# 使用其他 registry
np --registry https://registry.npmjs.org
# 或者通过环境变量
export FALLBACK_REGISTRY=https://registry.npmjs.org
np i wms查看帮助
np --help
np --version命令对照表
| npm 命令 | np 命令 | 说明 |
|---|---|---|
npm install |
np 或 np i |
全量安装 |
npm install wms |
np i wms |
安装包到 dependencies |
npm install -D wms |
np i -D wms |
安装包到 devDependencies |
npm install wms mws |
np i wms mws |
安装多个包 |
常见问题
Q: np 和 npm 有什么区别?
np 是一个包装器,它在底层调用 npm install,但会自动处理 registry 切换。安装完成后,你的项目文件不会被修改。
Q: 运行 np 后,我的 package.json 会变吗?
- 不会:如果你只是运行
np或np i进行全量安装,package.json 不会被修改 - 会:如果你运行
np i wms安装新包,package.json 会新增对应的依赖条目(这是正常行为)
Q: 运行 np 后,我的 node_modules 会被清空吗?
会。np 会先删除 node_modules 和 lock 文件,然后重新安装。这是为了确保从正确的 registry 拉取依赖。
Q: 我需要在项目根目录运行吗?
是的。np 会检查当前目录是否有 .git 目录。如果没有,会提示你切换到项目根目录。
Q: Windows 上运行报错怎么办?
- 确保你下载的是
.exe文件 - 如果被 Windows Defender 拦截,点击「更多信息」→「仍要运行」
- 如果提示找不到命令,检查 PATH 配置是否正确
Q: 如何卸载?
直接删除 np 二进制文件即可:
- macOS/Linux:
sudo rm /usr/local/bin/np - Windows: 删除
C:\tools\np.exe并从 PATH 中移除
工作原理
┌─────────────────────────────────────────────────────────────┐
│ 1. 备份原始文件 (.bak) │
│ - package.json │
│ - package-lock.json │
│ - .npmrc │
│ - yarn.lock │
├─────────────────────────────────────────────────────────────┤
│ 2. 替换本地依赖(如果存在) │
│ - cubeManualLenovo → local tgz │
├─────────────────────────────────────────────────────────────┤
│ 3. 临时切换 .npmrc 到外部 registry │
├─────────────────────────────────────────────────────────────┤
│ 4. 清理缓存和 node_modules │
├─────────────────────────────────────────────────────────────┤
│ 5. 执行 npm install │
├─────────────────────────────────────────────────────────────┤
│ 6. 合并新增依赖到原始文件 │
│ - 新包的条目会添加到 package.json │
│ - 新包的 lock 条目会添加到 package-lock.json │
├─────────────────────────────────────────────────────────────┤
│ 7. 恢复所有原始文件 │
│ - package.json(原始内容 + 新增依赖) │
│ - package-lock.json(原始内容 + 新增 lock 条目) │
│ - .npmrc(恢复原始 registry) │
│ - yarn.lock(恢复原始内容) │
└─────────────────────────────────────────────────────────────┘
许可证
MIT