答案是使用精确版本号并避免执行composer update。在composer.json中指定具体版本如"1.3.5",结合composer.lock文件确保依赖稳定,通过不运行update命令防止更新,团队协作时统一使用install,并可在必要时fork私有版本实现长期锁定。

在 Composer 中锁定一个包的版本,最直接的方式是通过 明确指定版本号,而不是使用宽松的版本约束。这样可以防止该包在运行 composer update 时被自动更新。
1. 使用精确版本号
在 composer.json 文件中,将包的版本从如 "^1.0" 或 "~1.2.0" 改为具体的版本号:
这样 Composer 只会安装 1.3.5 版本,不会进行任何小版本或补丁更新。
2. 锁定已安装的版本(利用 composer.lock)
Composer 已经通过 composer.lock 文件锁定了当前项目中所有依赖的具体版本。只要你不运行 composer update,执行 composer install 就会严格按照 lock 文件安装。
因此,不更新特定包的前提是避免执行全局或针对该包的 update 命令。
3. 禁止某个包被更新(使用 config platform 或 patch 脚本)
Composer 本身没有原生的 “禁止更新” 标记,但你可以通过以下方式间接实现:
- 使用
composer require vendor/package:1.3.5显式固定版本 - 团队协作时,确保所有人理解不要手动更新该包
- 在 CI/CD 流程中使用
composer install而非composer update
4. 使用 replace 或 fork 维护私有版本(高级场景)
如果你需要长期锁定并可能修改代码,可以:
- 将该包 fork 到私有仓库
- 修改其版本号(如加后缀
1.3.5-myfork.1) - 在项目中引用你的私有版本
这样既实现了锁定,又保留了自定义能力。
基本上就这些。核心是:用具体版本号 + 不轻易运行 update = 实际锁定。










