Composer如何设置自定义脚本钩子?(事件监听示例)
Composer 的脚本钩子全靠 scripts 字段驱动,它不是插件也不是扩展,就是个 JSON 键值对。写错位置或格式,composer install 不报错但脚本压根不触发。
技术博客
Composer 的脚本钩子全靠 scripts 字段驱动,它不是插件也不是扩展,就是个 JSON 键值对。写错位置或格式,composer install 不报错但脚本压根不触发。
CI 环境没用户交互、没缓存、网络策略严,composer install 默认行为很容易崩。比如它会试图读取 auth.json、触发脚本、检测平台扩展,而这些在容器里全不可用。
加 –no-suggest 就能直接跳过所有 suggest 字段声明的包,不会提示、不会下载、也不会写入 vendor/。它不改变依赖解析逻辑,只影响“额外推荐内容”的处理阶段。
Sublime 默认完全不认识 .vue 文件,打开就是纯文本——这不是你配置错了,是它压根没语法定义。真正起作用的是 Vue Syntax Highlight(作者 vuejs-sublime-project),不是早已停更的 Vuejs 或只提供片段的 Vuejs Snippets。装错名字,高亮就永远不生效。
Sublime Text 默认对所有文本启用拼写检查,但像 Python、JavaScript 这类代码里满屏红色波浪线纯属干扰。禁用方法不是全局关掉,而是按语法(syntax)单独控制——关键在 spell_check 配置项和作用域匹配。
Sublime Text原生不支持fish语法高亮,打开.fish文件只会套用ShellScript(即bash/zsh)的规则,导致set -l、for var in $list、string replace这类fish特有语法被标红或完全不着色。
因为 Sublime 默认启用 hot_exit 和 remember_open_files,两者叠加导致它“记性太好”——关掉前什么开着,下次就原样还原。这不是 bug,是设计行为,但和“启动空白页”需求冲突。
核心是改 composer.json 的 repositories 配置,把默认的 packagist.org 关掉,再加你的私有源。不关默认源的话,Composer 会先去公网找——哪怕你写了私有地址,它也可能绕过你直接连外网。
默认情况下,composer 的网络请求超时是 300 秒(5 分钟),但实际遇到慢源(比如国内直连 packagist.org)、代理不稳定或大包下载时,经常在 Downloading… 阶段卡死,最终抛出类似 Connection timed out 或 cURL error 28: Operation timed out 的错误。
这不是 Composer 自身的问题,而是 Xdebug 的递归限制被 Composer 的依赖解析器(特别是 composer/composer 内部的 AST 解析和插件加载逻辑)意外触发。Xdebug 默认的 xdebug.max_nesting_level=256 在处理大型项目(比如含 dozens 个插件、嵌套 require-dev、或使用 path repository 的 monorepo)时很容易耗尽。