Symfony 5.4中如何刷新供应商依赖的资产包?
Symfony 5.4 供应商资产依赖版本不一致问题:原因与解决方法
问题原因
你遇到的版本差异是npm依赖范围的正常行为:
package.json里的"moment-timezone": "^0.5.32"使用了^前缀,代表npm会安装0.x.x系列中不低于0.5.32的最新兼容版本,0.5.34完全符合这个范围,所以bundle开发者发布包时,npm自动安装了该范围的最新版。- 供应商bundle的
Resources/public目录下的依赖文件,是bundle开发者在发布前就已通过npm安装并打包好的,并非你执行composer install或assets:install时动态生成的,因此删除vendor重装不会改变这个目录里的内容。
强制刷新/重新安装供应商依赖的方法
若要让目标bundle重新安装对应版本的依赖,可按以下步骤操作:
- 进入目标bundle的目录:
cd vendor/ezsystems/ezplatform-admin-ui-assets - 清理现有依赖与锁定文件:
rm -rf node_modules package-lock.json - 重新安装依赖:
- 若要遵循
package.json的版本范围(仍会安装0.5.34,因为是该范围的最新版):npm install - 若要强制安装0.5.32精确版本:
修改package.json中的依赖为"moment-timezone": "0.5.32",再执行:npm install
- 若要遵循
- 同步资产到Symfony公共目录:
返回项目根目录执行:php bin/console assets:install public
注意事项
直接修改vendor目录的方式是临时的,下次执行composer update或composer install时,bundle会被重新下载,所有修改会丢失。如果需要长期生效,建议:
- 向该bundle的开发者提交Issue,要求更新
package-lock.json或固定依赖版本 - 使用
composer patch工具为bundle打补丁,持久化修改其package.json和依赖文件
内容的提问来源于stack exchange,提问作者Ángel Díaz de Vivar
相关产品推荐
相关产品推荐

