如何使用Composer create-project命令快速搭建项目脚手架?

12次阅读

composer create-project 搭建项目需指定稳定版本(如 ^10.0、stable 或 v6.4.0),加 –no-scripts 跳过钩子,–no-install 延迟依赖安装,注意模板自身的 minimum-stability 配置。

如何使用Composer create-project命令快速搭建项目脚手架?

直接用 composer create-project 搭建项目脚手架,核心在于选对包名、控制安装行为、避免默认拉取 dev 分支或触发不必要的脚本。

指定稳定版本(避免默认装 dev-main)

不加约束时,Composer 可能拉取 dev-main 或最新 unstable 版本,导致依赖冲突或功能异常。必须显式指定稳定版本号或别名:

  • ^2.0~3.1 等版本约束(如 laravel/laravel:^10.0
  • stable 别名(composer create-project laravel/laravel myapp stable
  • 用具体 tag(composer create-project symfony/skeleton myapp v6.4.0

跳过自动执行 post-create-project-cmd 脚本

很多框架模板自带 post-create-project-cmd,比如清空 git 仓库、生成 key、初始化数据库等。开发调试阶段常需跳过这些操作,否则会卡住或失败:

  • --no-scripts 参数彻底禁用所有脚本
  • --no-install 可跳过 composer install 步骤,后续手动控制依赖安装时机
  • 注意:Laravel 的 php artisan key:generate 不在该钩子里,它属于 post-root-package-install,也受 --no-scripts 影响

自定义安装路径与 Git 初始化控制

create-project 默认会在目标目录初始化 Git 仓库(如果源包含 .git),但有时你希望保留原始模板的 Git 历史,或完全不初始化:

  • 目标路径已存在且非空?命令会直接报错 —— 必须先清空或换路径
  • 想保留模板的 Git 记录?确保源包是 Git 仓库且未被 Composer 打包为 zip;但绝大多数 packagist 包都是 zip 分发,Git 信息已丢失
  • 安装后立刻重置 Git:运行 rm -rf .git && git init 是最可靠的做法

从私有仓库或本地路径创建项目

公司内部脚手架通常不在 Packagist,需显式配置源或使用路径:

  • 临时加私有仓库:composer create-project --repository-url=https://repo.example.com/packages.json vendor/template myapp
  • 用本地路径(适合调试模板):composer create-project --repository-url='{"type":"path","url":"/path/to/local/template"}' vendor/template myapp
  • 注意:本地路径方式要求模板根目录含 composer.json,且 name 字段必须匹配命令中写的 vendor/template
composer create-project laravel/laravel myapp ^10.0 --no-scripts --no-install

真正麻烦的不是命令本身,而是模板包自身的 composer.json 配置是否合理 —— 尤其是 minimum-stabilityprefer-stable 和脚本定义。很多人卡在“为什么总是装 dev 包”,答案往往不在你的命令,而在模板作者没设好 stability 策略。

text=ZqhQzanResources