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

直接用 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-stability、prefer-stable 和脚本定义。很多人卡在“为什么总是装 dev 包”,答案往往不在你的命令,而在模板作者没设好 stability 策略。










