composer怎么创建项目_composer新建项目教程【速成】

1次阅读

composer create-project 才是真正新建项目的方法,它拉取代码、安装依赖、初始化目录结构并执行初始化脚本;而 composer init 仅生成空的 composer.json 文件,不安装包也不创建目录。

composer怎么创建项目_composer新建项目教程【速成】

直接用 composer create-project,别碰 composer init —— 后者只生成空配置,不装包、不建目录结构,根本不算“新建项目”。

create-project 和 init 的本质区别

很多人搜“composer新建项目”,一上来就跑 composer init,结果发现目录空空如也,vendor/ 没有,index.php 也没影——因为 composer init 只写 composer.json,连文件夹都不帮你建。

composer create-project 才是真正的新建:拉代码、装依赖、初始化目录、执行 post-create-project-cmd 脚本(比如 laravel 的 key 生成)。

  • composer init → 适合已有项目补配置
  • composer create-project laravel/laravel myapp → 真正开新项目
  • 没指定包名时(如 composer create-project),会报错:Not enough arguments

常见目标框架的 create-project 写法

不同项目模板对参数敏感,漏掉版本或选项会导致拉错分支、装不上扩展、甚至卡在交互式提问里。

  • Laravel 最新版:composer create-project laravel/laravel myapp
  • Laravel 10.x(避免自动上 11):composer create-project laravel/laravel myapp "10.*"
  • symfony Web 应用:composer create-project symfony/skeleton myapp(不是 symfony/framework-bundle
  • 纯 PHP 包(如 PHPUnit 模板):composer create-project phpunit/phpunit-skelgen myapp

注意:双引号包裹版本号是必须的,否则 shell 会把 * 当通配符展开,报 No such file or Directory

为什么有时卡住不动?网络和镜像问题

create-project 默认走 packagist.org,国内直连大概率超时或 404,表现为命令停住、无输出、CPU 占用低、等十分钟也不报错。

  • 先确认是否用了镜像:composer config -g repo.packagist,应返回带 mirrors 的 URL
  • 临时切镜像运行:composer create-project --repository=https://packagist.phpcomposer.com laravel/laravel myapp
  • 如果项目含大量 dev-dependencies(如测试工具),加 --no-dev 能显著提速:composer create-project --no-dev laravel/laravel myapp

不加 --no-interaction 时,部分模板会问数据库前缀、APP_NAME 等,卡在 stdin 等输入——CI/脚本场景务必加上。

项目生成后立刻要检查的三件事

生成完不是终点,很多问题这时才暴露,尤其当你准备立刻 php artisan servesymfony server:start

  • 检查 vendor/autoload.php 是否存在 —— 不存在说明依赖安装失败,看 composer install 日志里的 failed
  • 运行 ls -la 确认 myapp/ 下有 artisan(Laravel)或 bin/console(Symfony),没有说明模板拉取不完整
  • PHP 版本是否匹配:Laravel 10 要 PHP 8.1+,php -v 错了会报 Your requirements could not be resolved,但错误在 create-project 过程中被吞掉

最常被跳过的其实是权限:windows 上用 WSL 创建的项目,回到 Windows 编辑器可能因 vendor/ 权限混乱导致 autoload 失效,这时候别硬试,删掉重来更省时间。

text=ZqhQzanResources