composer无--exclude/--only参数,所谓仓库过滤实为源级排除而非包级拦截;repositories.exclude仅对当前源生效,支持"acme/*"前缀匹配但不支持后缀;真正限制包来源须用type:package显式声明并置顶,conflict是唯一解析期硬拦截手段。

Composer 没有全局包名级的 --exclude 或 --only 过滤机制,所谓“仓库过滤”本质是控制包来源可见性与解析优先级,不是运行时筛包。
repositories.exclude 只对当前仓库生效,不影响其他源
它属于“源级排除”,不是“包级拦截”。比如你在私仓配置中加了 "exclude": ["acme/*"],那 Composer 在查这个私仓时会跳过所有 acme/ 开头的包——但若 acme/tool 同时存在于 packagist.org,它仍可能从官方源装进来。
-
exclude不支持后缀匹配(如"*tool"是非法写法) - 多个仓库都声明了同名包时,
exclude不改变查找顺序,只让当前源“假装没这包” - 它无法阻止
composer require acme/tool成功——只要别的源提供该包,就会被拉取
想真正限制某包只从指定仓库来?必须用 type: package + 顺序置顶
这是唯一能实现“仓库级白名单效果”的方式:把私有包显式声明为 "type": "package",并放在 repositories 数组最前面。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 每个包要单独写一个
package条目,含name、version、dist.url和dist.type - Composer 不会自动扫描该仓库里的其他包,只认你列出来的那些
- 必须放第一位,否则 packagist 镜像或默认源可能先命中同名包,导致私包被忽略
- 别用
"type": "composer"——它依赖远程packages.json,一不小心就全量暴露
关掉默认源后,require 找不到包?不是配置错,是包根本不在你列的仓库里
执行 composer config -g repo.packagist false 后,Composer 彻底放弃 packagist.org 的索引能力。它只查你 repositories 里明确定义的地址。
- 验证是否生效:
composer config -g -l | grep repositories应同时显示repo.packagist=false和你添加的仓库条目 - 如果
require vendor/name报错“Package not found”,先去 https://www.php.cn/link/94953b1a99c64501ceb078724697224f 看右上角 “Source” —— 若指向 GitHub,说明它只在官方源存在 - 临时补救:
composer require vendor/name --repository=https://packagist.org(单次绕过) - 长期方案:为该组织加对应镜像,例如 VuePress 包得加
repositories.vuepress条目
conflict 是唯一能在解析阶段硬拦包的方式,但要小心副作用
它不靠仓库配置,而是在依赖求解时直接报错中断,确保某包绝不会进入 composer.lock。
- 写法必须精确:
"conflict": { "monolog/monolog": ">=2.0.0" },漏斜杠或版本通配不严谨都会失效 - 副作用明显:如果
symfony/console硬依赖该包,整个composer update会失败,不是静默跳过 - 它对间接依赖无效——只拦最终进 lock 的包,不拦中间传递链里被其他约束放行的版本
- 别和
replace混用:后者是“假装已有”,不校验真实性,上线前务必用composer show确认它真没出现在 vendor 里
最易被忽略的一点:环境变量 COMPOSER_REPO_PACKAGIST 会完全覆盖所有 repo.packagist 设置,CI 脚本里务必检查是否被意外设值;另外,任何非空的 repositories 配置(哪怕只是个无效 URL)都会让 Composer 跳过 packagist.org 的注册校验,供应链风险陡增。










