composer install --no-scripts 是禁用所有脚本执行的唯一可靠方式,它跳过 scripts 字段定义的 pre-/post- 命令但保留 autoloader 生成,适用于 ci/cd、容器构建等无需自动执行脚本的场景。

为什么 composer install 会执行脚本,而你不想让它执行
Composer 默认在 install 和 update 后自动运行 post-install-cmd、post-update-cmd 等脚本——比如生成 autoload 文件、清缓存、构建前端资源。但 CI/CD 构建环境、只部署 runtime 的容器镜像、或调试依赖冲突时,这些脚本不仅没必要,还可能失败或拖慢流程。
--no-scripts 是唯一可靠的方式
这是 Composer 官方支持的开关,直接禁用所有脚本执行(包括 pre-*、post-*、auto-scripts)。它不修改 composer.json,也不影响后续命令,只作用于当前调用。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer install --no-scripts:跳过所有 install 阶段脚本 -
composer update --no-scripts:跳过所有 update 阶段脚本 - 该参数对
require命令同样生效,例如composer require monolog/monolog --no-scripts - 注意:
--no-scripts不影响 autoloader 生成(vendor/autoload.php仍会写入),它只跳过显式定义在scripts字段里的逻辑
别用 --no-autoloader 或删 scripts 字段来“绕过”
有人试过 --no-autoloader,但这只是不生成 autoload 文件,脚本仍会执行,且后续 require 会报错;也有人临时注释掉 composer.json 里的 scripts,但容易漏提交、破坏团队一致性。这两种方式都偏离目标,还引入新风险。
-
--no-autoloader≠ 跳过脚本,它只关 autoload,脚本照跑 - 手动删或注释
scripts:本地改了没推、CI 里没同步,会导致行为不一致 -
COMPOSER_NO_SCRIPTS=1环境变量也能生效,但不如命令行参数明确,且容易被忽略或覆盖
CI 场景下建议搭配 --no-interaction 和 --prefer-dist
在自动化环境中,单独用 --no-scripts 还不够稳妥。交互提示、源码克隆、插件激活等非脚本行为也可能卡住流程。
-
composer install --no-scripts --no-interaction --prefer-dist是 CI 最简安全组合 -
--no-interaction避免因缺少用户输入(如 auth token 提示)而挂起 -
--prefer-dist强制下载压缩包而非 git clone,更快更稳定,尤其在无 git 的容器中 - 如果项目用了
composer-plugin-api插件(如hirak/prestissimo),它们可能在 install 前触发,--no-scripts对它们无效——需单独禁用插件或换用COMPOSER_DISABLE_PLUGINS=1
php artisan config:clear 这类命令不会自动跑——得你来决定什么时候、在哪台机器上补上。










