composer create-project vendor/name project-dir是最简不报错写法,需确保vendor/name是Packagist上type="project"的真实包、project-dir为空目录,且执行后须进目录运行composer install。

直接用 composer create-project 就能一步拉起一个可运行的 Demo 项目,不用手写 composer.json、不用手动 require、也不用猜模板结构。
create-project 命令怎么写才不报错
最简形式是:composer create-project vendor/name project-dir。关键点在 vendor/name 必须是 Packagist 上真实存在的、带 composer.json 的包,且该包声明了 "type": "project" 或含可执行入口(如 index.php)。
- 常见可用 Demo 包:官方推荐的
symfony/skeleton(轻量框架起点)、laravel/laravel(完整应用模板)、twig/twig-skeleton(纯 Twig 渲染示例) - 别写成
composer create-project twig/twig——这是库,不是项目模板,会报Could not find package - 路径名
project-dir不能已存在;若存在,加--remove-vcs或先删空目录 - 网络慢时加镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,再运行命令
拉下来的项目为什么一启动就报 Class not found
90% 是因为没跑 composer install ——create-project 只复制代码和 composer.json,vendor 目录默认为空或只含基础 autoload 骨架。
- 进项目目录后必须立刻执行:
composer install(不是require) - 确认
vendor/autoload.php存在且被入口文件引用(如public/index.php第一行应为require __DIR__.'/../vendor/autoload.php';) - 某些 Skeleton(如 Symfony)会自动执行
dump-autoload,但 Laravel 等需手动验证:php -r "var_dump(class_exists('Illuminate\Foundation\Application'));"
如何跳过交互式配置快速生成
加 --no-interaction 参数即可绕过所有提示,适合 CI 或批量初始化。
- 例如:
composer create-project symfony/skeleton myapp --no-interaction - 它不会问你是否启用 Webpack Encore、是否安装 Maker Bundle,而是按包内
composer.json的scripts和默认配置走 - 如果想进一步跳过插件执行(比如避免自动运行
assets:install),加--no-scripts - 注意:
--no-interaction不跳过依赖下载失败,网络问题仍会中断
真正容易被忽略的是:create-project 拉下来的项目,composer.lock 里锁死的是“当时发布那一刻”的依赖版本,不是最新版。想升到当前最新兼容版,得进目录后手动 composer update ——但别在生产环境随便动,尤其涉及 major 版本变更。











