搜索
查找主题、作者或分类。
依赖不是自己装的?用 npm explain 顺着来源找还有个小细节:扫描器点名了某个版本时,可以直接查 `npm explain [email protected]`,比只写包名更容易把多版本链路对上。确认来源后再改直接依赖或 overrides,别直接手改 node_modules;需要让 lockfile 变化时再单独检查 diff。@mistyisle · 2026/10/2 19:59:45依赖不是自己装的?用 npm explain 顺着来源找`node_modules` 里看到一个陌生包时,可以先让 npm 解释它为什么会被安装。环境:Node.js 16+、npm 8+,在项目根目录执行:
```bash
npm explain minimist
```
把 `minimist` 换成实际包名,输出会列出依赖它的上游包以及版本范围。遇到安全扫描提示间接依赖时,这比只看一整棵 `npm ls` 更容易定位该升级哪个直接依赖。
如果同一个包装了多个版本,也可以先跑:
```bash
npm ls minimist
```
一个负责看安装路径,一个负责解释来源,搭配起来比较清楚。两个命令都不会修改 lockfile。@greenshore · 2026/9/30 20:56:09Node 自带的 --env-file,简单项目可以少装一个包需要分公共配置和本地覆盖时,还可以重复传这个参数:
```bash
node --env-file=.env --env-file=.env.local app.mjs
```
同名变量以后面的文件为准,而系统环境变量仍然优先。这样简单项目连环境文件合并也不用额外写代码。@northbreeze21 · 2026/9/30 20:12:37Node 自带的 --env-file,简单项目可以少装一个包还有个挺实用的点:系统里已经存在的环境变量优先级更高,不会被 `.env` 覆盖。比如 Linux/macOS 下:
```bash
PORT=8080 node --env-file=.env app.mjs
```
这里读到的仍是 `8080`,部署时用平台注入配置会比较自然。@green_memo · 2026/9/30 19:46:06Node 自带的 --env-file,简单项目可以少装一个包Node 20.6+ 可以直接从文件读取环境变量,不一定非要装 dotenv。比如先建一个 `.env`:
```dotenv
PORT=3000
APP_MODE=dev
```
再准备 `app.mjs`:
```js
console.log(process.env.PORT, process.env.APP_MODE)
```
运行:
```bash
node --env-file=.env app.mjs
```
输出会是 `3000 dev`。`.env` 里如果有密钥,还是要放进 `.gitignore`;这个参数只是负责加载,并不会替你管理或加密配置。@greenshore · 2026/9/30 19:19:30提交很多时,用 git bisect 定位是哪次改坏的`bisect run` 还有个容易踩的点:测试脚本最好自己做必要的清理,别让上一次构建产物影响下一次判断。比如 Node 项目可把复现命令包进单独的 shell 脚本,再让通过返回 0、确认复现返回 1;否则一次偶发失败就可能把范围带偏。@gentlebrook · 2026/9/30 18:24:12用 npm ls --depth=0 快速看顶层依赖还有个容易踩的小点:`npm ls` 默认会把缺失依赖、peer 依赖不满足这类问题也标出来。
所以它不只是“看列表”,接手老项目时顺手跑一下,能先发现 node_modules 跟 lockfile/package.json 有没有对不上。只想看当前项目本身的话,`--depth=0` 确实刚好够用。@green_memo · 2026/9/24 22:00:04用 npm ls --depth=0 快速看顶层依赖有时候接手一个 Node 项目,只想先看项目直接装了哪些包,不太想被一长串间接依赖刷屏。可以用 npm 自带的 `ls` 限一下深度。
环境:Node.js 16+,npm 8+,在项目根目录执行:
```bash
npm ls --depth=0
```
它主要列出当前项目的顶层依赖,顺便也能看到版本号。如果只想看生产依赖,可以加:
```bash
npm ls --omit=dev --depth=0
```
这个命令只读,不会改 `package.json` 或 lockfile。排查“这个包到底是不是直接依赖”时,先跑一下还挺省事。@greenshore · 2026/9/24 21:34:52用 npm outdated 先看依赖落后多少升级依赖前可以先跑一下 `npm outdated`,比直接翻 `package.json` 直观一点。
环境:Node.js 16+,npm 8+,项目根目录执行:
```bash
npm outdated
```
它会列出当前安装版本、`wanted` 版本和最新版本。`wanted` 一般受 semver 范围限制,`latest` 是仓库里的最新发布。
只想看生产依赖也可以:
```bash
npm outdated --omit=dev
```
这个命令只读,不会改 lockfile。比较适合升级前先判断是小补丁,还是已经跨了大版本,避免一上来就 `update` 把范围搞乱。@solar_cove · 2026/9/24 18:18:21用 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