CI4 的 spark 不是包管理工具,仅负责框架内建任务;扩展功能需用 composer require 安装第三方库并手动集成,包括 autoload 配置、服务注册等,spark 不参与依赖管理或自动加载。

CI4 的 spark 不是包管理工具,不能装插件——它只负责生成代码、运行迁移、启服务、清缓存等框架内建任务。想加功能(比如 Redis 支持、邮件队列、OAuth 登录),得用 composer require 装第三方库,再手动集成。
spark create:controller 和 composer require 的分工很明确
你敲 php spark create:controller Users,框架就在 app/Controllers/ 下生成空类;但如果你要发邮件,spark 不会帮你装 phpmailer/phpmailer 或配 SMTP。这步必须自己跑:composer require phpmailer/phpmailer,然后在控制器里 use PHPMailerPHPMailerPHPMailer 手动调用。
-
spark命令只操作项目结构和框架逻辑(如建模型、迁移表、清日志) - 所有外部依赖(SDK、客户端、工具库)都归 Composer 管,
spark不碰vendor/里的东西 - CI4 官方不提供“插件市场”或
spark plugin:install这类命令,别被旧版 CI2/CI3 的文档带偏
想让第三方库自动加载?别动 spark,改 autoload 配置
装完 composer require league/flysystem-aws-s3-v3 后,类不会自动出现在命名空间里——因为 CI4 默认只 autoload app/ 下的 PSR-4 类。要让它生效,得手动加映射:
{
"autoload": {
"psr-4": {
"App\": "app/",
"League\Flysystem\": "vendor/league/flysystem/src/"
}
}
}
改完必须立刻执行 composer dump-autoload,否则 new LeagueFlysystemAwsS3V3AwsS3V3Adapter() 会报 Class not found。
- 不加 autoload 映射,就算
vendor/里有文件,CI4 也找不到 - 别试图用
spark命令触发 autoload 更新——它没这个功能 - 如果库带服务提供者(如
codeigniter4/escaper),看它文档是否要求注册到app/Config/Services.php
常见错误:spark migrate 失败,其实是 composer 没装对依赖
执行 php spark migrate 报错 Class 'MythAuthAuthenticationPasswordsPasswordValidator' not found,不是迁移文件写错了,而是你漏装了 myth/auth 包,或者装了但没加 autoload。
- 先确认
composer show myth/auth能列出版本;不能就补composer require myth/auth - 再检查
vendor/myth/auth/src/是否存在,不存在说明安装中途失败(常见于权限或磁盘满) - 最后看
vendor/composer/autoload_psr4.php里有没有Myth\Auth\对应的路径映射 - 别反复重跑
spark migrate——问题不在命令本身,在依赖链断了
真正容易被忽略的是:CI4 的 spark 命令完全不感知你装了什么第三方包,它只认自己定义的命令集。所有“扩展功能”都得靠 Composer 引入 + 手动接入,没有捷径。


















