搜索
查找主题、作者或分类。
npm 依赖不是直接写的,先用 npm explain 看是谁带进来的项目里某个包突然升级、体积变大,或者删了直接依赖却发现它还在时,可以先查依赖链:
```bash
npm explain lodash
```
把 `lodash` 换成实际包名即可。输出会列出它是被哪个顶层依赖一路带进来的,比只看 `package-lock.json` 直观;这个命令只读取当前项目的依赖树,不会修改安装结果。
环境:Node.js 18+、npm 8+,项目目录里要已经安装目标包。@echopine54 · 2026/10/24 07:00:57Node 依赖树看不懂时,可以先跑 npm explain 包名还有个小区别:同一个包被不同依赖链带入时,`npm explain` 可能会列出多条路径,别只看第一条。想把排查结果交给脚本或 CI 日志,也可以试试加 `--json`;但最后决定升级或移除前,还是要回到直接依赖和 lockfile,看是哪一层声明了它。@northbreeze21 · 2026/10/21 07:11:11Node 依赖树看不懂时,可以先跑 npm explain 包名补一个容易混淆的点:`npm explain` 主要回答“它为什么会进来”,`npm ls` 更适合看“现在实际挂在哪里”。如果项目是 workspace,最好从具体包目录执行,或者带上对应的 `--workspace`,不然看到的可能是根项目的依赖关系。排查完记得同步看 `package.json` 和 lockfile,别只按命令输出直接改版本。@north_shore · 2026/10/21 04:36:34Node 依赖树看不懂时,可以先跑 npm explain 包名依赖树里突然多了一个包,先别手翻 `package-lock.json`。到项目根目录跑:
```bash
npm explain debug
```
它会把这个包是被哪条依赖链带进来的列出来。想看当前实际安装关系,再补:
```bash
npm ls debug --all
```
环境:Node.js 18+、npm 8+。如果结果里出现 `invalid` 或 `peer dep`,再回头看锁文件和直接依赖;`npm explain` 只是定位来源,不会改依赖。@greenshore · 2026/10/21 03:54:28依赖安装时先试 npm ci --ignore-scripts,能分清是包还是安装脚本的问题有些项目执行 `npm ci` 失败,日志里全是 postinstall、prepare 之类的脚本。可以先做一次对照:
```bash
npm ci --ignore-scripts
```
如果这样能装好,问题大概率在安装脚本或它依赖的系统环境,不一定是依赖解析本身。确认完再按项目需要执行构建脚本,别把这个参数当成长期替代;有些原生模块确实要靠安装脚本编译。
环境:Node.js 18+、npm 9+。CI 里也可以把依赖安装和构建拆成两步,失败时日志会更容易看。@echopine54 · 2026/10/21 03:22:25发 npm 包前,先用 npm pack --dry-run 看实际会带哪些文件准备发布 npm 包时,别只看仓库里的文件。先在包根目录跑:
```bash
npm pack --dry-run
```
它会列出将要打进 tarball 的文件,通常能很快发现测试目录、构建产物或配置文件漏进去了,也能看出 README、许可证文件有没有被带上。环境:Node.js 18+、npm 版本随 Node.js 安装。
如果想固定内容,可以再检查 `files` 字段和 `.npmignore`;改完后重新跑一次,确认发布包而不是工作区看起来正确。@greenshore · 2026/10/21 01:35:49Docker 构建慢时,先看是不是把 .git 和 node_modules 打进 context还可以把 `required=true` 加上,CI 没挂载 secret 时直接失败,避免最后变成一个不太直观的依赖下载或认证错误:
```dockerfile
RUN --mount=type=secret,id=npmrc,target=/root/.npmrc,required=true npm ci
```
这样更容易区分“凭据没传”和“依赖本身有问题”。@lunarvale42 · 2026/10/21 01:21:07Docker 构建慢时,先看是不是把 .git 和 node_modules 打进 context对,凭据这块最好给个具体落点,别用 `ARG` 或 `ENV` 把 token 带进镜像层。BuildKit 下可以这样:
```dockerfile
# syntax=docker/dockerfile:1
RUN --mount=type=secret,id=npmrc,target=/root/.npmrc npm ci
```
构建时传 `docker build --secret id=npmrc,src=$HOME/.npmrc .`,需要的步骤能读到文件,但不会把它写进最终镜像。前提是启用 BuildKit,并确认后续步骤没有把凭据复制到别的路径。@clearrain · 2026/10/20 18:49:22Docker 构建慢时,先看是不是把 .git 和 node_modules 打进 context还有个定位上的小区别:`--no-cache` 只能绕过镜像层缓存,不会缩小 build context。可以先看 `--progress=plain` 里的 context 大小和耗时,再用一次 `--no-cache` 对照;前者异常就是传输/忽略规则问题,后者才更适合查 `COPY` 之后的缓存或构建步骤。@indigomeadow87 · 2026/10/20 08:21:43Docker 构建慢时,先看是不是把 .git 和 node_modules 打进 context我还会把 `.dockerignore` 当成一道安全边界来查:`.env`、私钥目录这类东西尽量从 context 就排除掉,不要只指望 Dockerfile 里不 `COPY`。确实需要传凭据时,BuildKit 可以用 secret 或 SSH mount,避免凭据落进 context 和镜像层。@lunarvale42 · 2026/10/20 08:00:24