技术咨询:是否存在与pip download功能等效的npm命令(非npm pack)
技术咨询:是否存在与pip download功能等效的npm命令(非npm pack)
嗨,太懂你的痛点了!我之前在搭建Verdaccio私有仓库的时候也遇到过一模一样的需求——要找个能像pip download那样递归拉取包和所有子依赖tgz的npm工具,npm pack只处理单个包的情况确实拉胯,手动递归解压再pack的办法效率低到离谱,打包node_modules的方案又只适合单项目迁移,完全不搭。
给你几个切实可行的方案,都是我实际用过的:
方案一:利用npm全局缓存导出
这是最官方的路子,不需要额外工具:- 在联网机器上新建个临时文件夹,初始化项目:
npm init -y - 把你需要的所有依赖都加到
package.json里(比如npm install --save your-package-1 your-package-2,不用真的安装完,只要把依赖写进文件就行) - 执行
npm ci --no-audit,这会把所有依赖和子依赖都拉到npm的全局缓存目录(默认是~/.npm/_cacache) - 清理无效缓存:
npm cache verify,然后把_cacache文件夹打包带走——里面全是完整的包tgz和元数据,直接就能导入Verdaccio的存储目录用
- 在联网机器上新建个临时文件夹,初始化项目:
方案二:用第三方工具
npm-download-all
这个工具就是专门干递归下载包tgz的活的:- 先全局安装:
npm install -g npm-download-all - 直接执行
npm-download-all your-target-package,它会自动递归拉取这个包所有依赖的tgz文件,全部存到当前目录的packages文件夹里,完全符合你要单独整理包的需求
- 先全局安装:
方案三:Verdaccio直接同步迁移
这个是最省心的,适合你搭仓库的场景:- 在联网机器上先搭一个临时的Verdaccio服务
- 配置Verdaccio的
config.yaml,开启和npm官方仓库的同步(默认就是开启的) - 然后在本地通过这个临时Verdaccio安装你需要的所有包,Verdaccio会自动把这些包同步到它的本地存储目录(默认是
~/.local/share/verdaccio/storage) - 最后把整个
storage文件夹打包,传到离线环境的Verdaccio目录下替换,直接就能用,连手动整理包的步骤都省了
这些方案都比你之前想的笨办法靠谱多了,完全能满足你给Verdaccio备料的需求~
内容来源于stack exchange
相关产品推荐
相关产品推荐

