如何避免npx执行Node库命令时重复下载对应依赖
npx 的默认运行逻辑是:如果目标包不存在于本地项目依赖、全局安装路径中,就会临时拉取包到临时缓存目录执行,临时文件不会长期留存,因此会出现每次执行都重新下载的问题。可以通过以下三种方案解决:
方案1:安装为项目本地开发依赖(最推荐)
在你的云函数项目根目录执行安装命令:npm install --save-dev @google-cloud/functions-framework
随后在项目的package.json中添加启动脚本:{ "scripts": { "dev": "functions-framework --target=你的云函数入口名" } }后续启动直接执行
npm run dev即可,命令会直接调用本地node_modules中已安装的包,不会重复下载,同时可以锁定版本,避免不同环境下版本不一致导致的运行异常。方案2:全局安装包
如果需要在多个项目中频繁调用该工具,可以直接全局安装:npm install -g @google-cloud/functions-framework
安装完成后无需加npx前缀,直接在命令行执行functions-framework加对应参数即可启动,全局安装的包会存储在npm固定全局目录下,不会被自动清理,一次安装可永久使用。方案3:强制npx优先使用本地缓存
如果不想修改安装方式,可以在调用npx时增加参数,强制优先读取本地缓存、不优先拉取线上版本:npx --prefer-offline @google-cloud/functions-framework
*该方案稳定性弱于前两种:如果运行环境配置了定期清理npm缓存(比如部分CI/CD环境的默认规则),还是会出现重新下载的情况。
内容的提问来源于stack exchange,提问作者Scorb

