Laravel 无原生命令支持创建时传参自定义安装,标准方式是 composer create-project 拉取骨架,所有自定义均在初始化后实现:可通过 --no-scripts 等 Composer 参数控制脚本执行、初始化后注入 .env 内容,或使用自定义模板仓库替代官方 skeleton。

Laravel 本身不提供“创建项目时直接传参自定义安装”的原生命令(比如 laravel new myapp --with-adminlte --no-migrations 这类语法),它的标准安装方式是通过 Composer 的 create-project 命令拉取基础骨架,所有真正意义上的“自定义”都发生在项目初始化之后,而非 laravel new 或 composer create-project 的参数阶段。
但你可以通过以下三类方式,在项目诞生初期就实现关键配置的差异化落地:
一、Composer 安装阶段可影响的隐式参数
这些不是 Laravel 自带的开关,而是 Composer 和 Laravel 脚手架共同作用的结果:
-
--prefer-dist/--prefer-source:控制依赖包下载方式(影响速度与可调试性) -
--no-scripts:跳过post-root-package-install和post-create-project-cmd脚本 → 会禁用 Laravel 默认的.env生成、密钥生成、目录权限设置等,需手动补全 -
--no-dev:不安装require-dev中的包(如 PHPUnit、Pint、PHPStan),适合生产镜像构建 -
--remove-vcs:初始化后立即删掉.git目录,适合作为模板复用
示例:
composer create-project laravel/laravel blog --no-dev --prefer-dist
⚠️ 注意:
laravel new命令(由 Laravel Installer 提供)底层也调用create-project,但它自动执行了php artisan key:generate等脚本,且不支持传递--no-scripts等参数。如需精细控制,推荐直接用composer create-project。
二、.env 文件内容可在初始化后立即注入
虽然 .env 是安装后生成的,但你可通过脚本或模板提前预置:
-
在
create-project后立刻写入定制.env:composer create-project laravel/laravel myapp && \ cd myapp && \ echo "APP_NAME=MyAdminPanel" > .env && \ echo "DB_CONNECTION=pgsql" >> .env && \ php artisan key:generate
使用
laravel/installer的--github-token参数(仅用于加速 GitHub 包下载,非功能配置)
三、用自定义应用模板替代官方 skeleton
这是最实用、最可控的“自定义安装”方式:
-
创建你自己的 GitHub 模板仓库(如
your-org/laravel-starter),里面已预装:- AdminLTE + Laravel(通过
adminlte-laravel包) - 预配置的
config/adminlte.php和config/menu.php - 自定义 Artisan 命令(如
make:admin-command) - 已注册的服务提供者、中间件、模型观察者等
- AdminLTE + Laravel(通过
-
安装时直接拉取你的模板:
composer create-project your-org/laravel-starter myapp
这种方式让“自定义”变成声明式的——不需要记参数,只需换一个仓库地址,就能获得整套业务约定。
不复杂但容易忽略。


















