离线单机环境执行 composer install 必须设置 composer_disable_network=1 并组合使用 --no-plugins --no-scripts --no-autoloader 参数,之后需立即运行 composer dump-autoload -o;新增本地依赖只能通过 path 仓库配合 composer require,且路径、包名、版本三者必须严格一致。

离线单机环境必须设 COMPOSER_DISABLE_NETWORK=1
不设这个环境变量,composer install 一定会尝试连接 repo.packagist.org,哪怕 vendor 目录完整、composer.lock 也存在,报错是必然的:Could not fetch https://repo.packagist.org/packages.json。这不是“网络慢”,而是 Composer 默认行为无法绕过。
设法方式(三选一):
- 临时生效:
COMPOSER_DISABLE_NETWORK=1 composer install --no-plugins --no-scripts --no-autoloader - 当前 shell 持久化:
export COMPOSER_DISABLE_NETWORK=1(Linux/macOS)或set COMPOSER_DISABLE_NETWORK=1(Windows cmd) - 全局配置(慎用):
composer config --global repo.packagist false,但注意:如果项目composer.json里显式写了"repositories": [{"type": "packagist", "url": false}],这条命令会导致直接退出而非静默忽略
composer install 离线执行时必须跳过哪些环节
即使禁了网络,插件、脚本、自动加载重建仍可能触发隐式联网或路径解析失败。以下参数不是可选,是强制组合:
-
--no-plugins:防止hirak/prestissimo、symfony/flex等插件初始化时查远程元数据 -
--no-scripts:屏蔽post-install-cmd,避免 npm install、生成 env 配置等意外调用外部命令 -
--no-autoloader:跳过 autoload 重建——某些自定义 autoloader 实现会尝试远程类映射
执行完这一步后,必须立刻补上:composer dump-autoload -o,否则运行时大概率报 Class not found。
本地 path 仓库只能用相对路径,绝对路径在 Windows 上大概率静默失效
想在离线单机环境加一个本地包(比如 ./packages/my-utils),不能写 "url": "/home/user/my-utils" 或 "url": "C:\dev\my-utils"。Composer 对 url 字段不做 shell 展开,~、$HOME、file:// 全部被忽略;Windows 下反斜杠未转义、路径含空格、盘符大小写混用都会导致仓库被跳过,且无明确报错。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
正确做法:
- 把本地包放在项目目录下,例如
./packages/my-utils/,其根目录含合法composer.json(name必须是acme/utils格式,不能有下划线或大写) - 项目
composer.json的repositories写成:[{"type": "path", "url": "./packages/my-utils"}](注意:末尾不能带/) - 执行:
composer require acme/utils:dev-main(不是install);改了本地包代码后刷新链接,必须用composer update acme/utils
离线新增依赖唯一可靠路径是 path 仓库 + 手动 require
composer require 默认必须联网查包名和版本,离线直接报错。你不能靠 composer install 自动拉新包——它只按 composer.lock 恢复已有状态。
所以离线加包只有这一条路:
- 目标包目录下必须有 Git 仓库(
git init && git add . && git commit -m "init"),否则 Composer 拒绝识别 - 该包的
composer.json中name和version(或dev-main这类分支标识)必须与require行完全匹配 -
require的版本约束必须对应本地包的version或分支名,例如写"acme/utils": "dev-main",就不能指望"acme/utils": "^1.0"自动命中
最易被忽略的一点:所有路径对齐必须严格——本地包 composer.json 的 name、项目 composer.json 里 repositories.url 的路径、require 中的包名字符串,三者错一个,就静默失败,vendor 里啥也不会出现。










