You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术咨询:是否存在与pip download功能等效的npm命令(非npm pack)

技术咨询:是否存在与pip download功能等效的npm命令(非npm pack)

嗨,太懂你的痛点了!我之前在搭建Verdaccio私有仓库的时候也遇到过一模一样的需求——要找个能像pip download那样递归拉取包和所有子依赖tgz的npm工具,npm pack只处理单个包的情况确实拉胯,手动递归解压再pack的办法效率低到离谱,打包node_modules的方案又只适合单项目迁移,完全不搭。

给你几个切实可行的方案,都是我实际用过的:

  • 方案一:利用npm全局缓存导出
    这是最官方的路子,不需要额外工具:

    1. 在联网机器上新建个临时文件夹,初始化项目:npm init -y
    2. 把你需要的所有依赖都加到package.json里(比如npm install --save your-package-1 your-package-2,不用真的安装完,只要把依赖写进文件就行)
    3. 执行npm ci --no-audit,这会把所有依赖和子依赖都拉到npm的全局缓存目录(默认是~/.npm/_cacache)
    4. 清理无效缓存:npm cache verify,然后把_cacache文件夹打包带走——里面全是完整的包tgz和元数据,直接就能导入Verdaccio的存储目录用
  • 方案二:用第三方工具npm-download-all
    这个工具就是专门干递归下载包tgz的活的:

    1. 先全局安装:npm install -g npm-download-all
    2. 直接执行npm-download-all your-target-package,它会自动递归拉取这个包所有依赖的tgz文件,全部存到当前目录的packages文件夹里,完全符合你要单独整理包的需求
  • 方案三:Verdaccio直接同步迁移
    这个是最省心的,适合你搭仓库的场景:

    1. 在联网机器上先搭一个临时的Verdaccio服务
    2. 配置Verdaccio的config.yaml,开启和npm官方仓库的同步(默认就是开启的)
    3. 然后在本地通过这个临时Verdaccio安装你需要的所有包,Verdaccio会自动把这些包同步到它的本地存储目录(默认是~/.local/share/verdaccio/storage)
    4. 最后把整个storage文件夹打包,传到离线环境的Verdaccio目录下替换,直接就能用,连手动整理包的步骤都省了

这些方案都比你之前想的笨办法靠谱多了,完全能满足你给Verdaccio备料的需求~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 07:32:59