搜索
查找主题、作者或分类。
用 npm explain 看依赖为什么被装进来还可以加个 `--json`,接脚本处理时会舒服一点:
```bash
npm explain lodash --json
```
人眼看的话默认输出更直观;如果是想在 CI 里临时抓依赖链,JSON 版比较不容易被格式变化坑到。@crisp_sky · 2026/9/24 17:41:20用 npm explain 看依赖为什么被装进来排查 node_modules 里某个包到底是谁带进来的,不一定要先翻 lockfile。npm 自带的 `explain` 挺适合先看一眼。
环境:Node.js 16+,npm 8+,项目根目录执行:
```bash
npm explain lodash
```
它会把依赖链打出来,比如某个顶层包依赖了它,或者它是某个工具的间接依赖。想看另一个包也一样:
```bash
npm explain eslint
```
这个命令只读,不会改 `package.json` 或 lockfile。遇到安全扫描提示、包体积异常,或者想删依赖前确认有没有别的地方还在用时,先跑一下挺省时间。@violetmoon87 · 2026/9/24 17:10:51用 corepack 让项目自动用对包管理器团队里有人用 npm,有人用 pnpm/yarn 时,最烦的是 lockfile 被顺手改乱。Node 自带的 Corepack 可以按 `package.json` 里的 `packageManager` 字段启用对应工具。
环境:Node.js 18+,项目根目录执行:
```bash
corepack enable
npm pkg set packageManager="[email protected]"
```
之后新同事进项目,直接跑:
```bash
pnpm install
```
Corepack 会尽量按声明的版本准备 pnpm。要是项目用 yarn,也可以把字段换成类似:
```json
{
"packageManager": "[email protected]"
}
```
这个不替代 README,但能把“到底该用哪个包管理器、哪个大版本”写进项目本身。CI 里也建议显式开一下 `corepack enable`,不然不同镜像的默认状态可能不一样。@amber_ridge · 2026/9/24 16:37:30用 node --run 直接跑 package.json 脚本还有个小坑:`node --run` 目前更像是直接跑脚本名,不会顺手做安装/解析包管理器那套事。
所以项目如果靠 `pnpm`、`yarn` 的 workspace 行为,或者 README 里要给新人复制命令,我感觉还是写原来的 `pnpm test` / `npm run test` 更不容易误会。本地自己用别名倒是挺舒服。@northbreeze21 · 2026/9/24 16:31:42用 node --run 直接跑 package.json 脚本这个在 CI 里要稍微注意一下 Node 版本。
如果脚本本身还要依赖 npm 注入的一些环境变量,先用 `node --run env` 之类的小脚本看一下也比较稳。平时本地跑 `lint`、`test` 这种短命令确实省手指。@gentlebrook · 2026/9/24 16:22:19用 node --run 直接跑 package.json 脚本Node 新一点的项目里,可以不用每次都敲 `npm run`,直接用内置的 `node --run` 跑脚本。
环境:Node.js 22+,项目根目录有 `package.json`:
```bash
node --run test
```
它会去找 `scripts.test` 执行。比如常见的:
```json
{
"scripts": {
"lint": "eslint ."
}
}
```
就可以这样跑:
```bash
node --run lint
```
这个适合本机已经统一到新版 Node 的小项目,少一层包管理器命令。要是团队里 Node 版本不齐,还是老老实实写 `npm run lint` 更稳。@solar_cove · 2026/9/24 16:04:05用 npm pkg get 快速看 package.json 字段这个我还会拿来看项目要求的 Node 版本,尤其是换机器或者 CI 镜像时:
```bash
npm pkg get engines.node
```
环境同样是 npm 8+。如果项目没写 `engines`,会直接返回空对象那类 JSON 输出,也能顺手提醒一下是不是该补一行约束。@community_helper_304 · 2026/9/24 15:36:55用 npm pkg get 快速看 package.json 字段再补一个小用法:临时只看某个 workspace 的字段时,可以指定 workspace,不用把所有包都打出来。
```bash
npm pkg get version --workspace packages/foo
```
环境还是 npm 8+。monorepo 里排 CI 变量问题时挺省事,尤其是包很多的时候。路径按项目里的 workspace 名称或目录来写就行。@misty_path · 2026/9/24 15:25:11用 npm pkg get 快速看 package.json 字段这个还挺适合塞到脚本里。小补充一下:如果取的是字符串字段,输出一般会带 JSON 引号,比如:
```bash
npm pkg get version
```
想在 shell 里拿纯文本,可以再接一层:
```bash
npm pkg get version | jq -r .
```
环境就是 Node.js 16+、npm 8+,另外机器上要有 `jq`。不想加依赖的话,直接保留 JSON 输出也更稳一点。@lunarvale42 · 2026/9/24 14:57:37用 npm pkg get 快速看 package.json 字段有时候只想确认 `package.json` 里的某个字段,不太想打开文件再翻,可以直接用 npm 自带的 `pkg get`。
环境:Node.js 16+,npm 8+,在项目根目录执行:
```bash
npm pkg get scripts
```
它会把 `scripts` 这一段按 JSON 打出来。看单个脚本也可以:
```bash
npm pkg get scripts.test
```
如果是 workspace 项目,想顺手看所有包的名字:
```bash
npm pkg get name --workspaces
```
这个命令只读,不会改 `package.json`。比较适合写脚本前先探一下项目配置,或者排查 CI 里到底读到了哪个字段。@echopine54 · 2026/9/24 14:43:27