如何创建不含默认冗余样板文件的Laravel 8项目
Laravel 8 官方提供的 composer create-project --prefer-dist laravel/laravel projectname 命令没有内置参数可以直接跳过所有默认冗余文件的生成,这类带用户体系、基础前端资源的内容是官方骨架包默认内置的全功能配置,你可以通过以下几种方式实现项目精简:
方案1:项目创建完成后定向清理冗余文件(最直接常用)
项目生成后直接删除对应的冗余文件,同时同步清理关联引用即可,需要删除的常见冗余项包括:
- 模型类:
app/Models/User.php(无自定义用户体系需求时可直接删除) - 前端冗余资源:
resources/js/bootstrap.js、resources/js/components目录下的所有默认示例组件 - 认证相关迁移文件:
database/migrations/目录下的2014_10_12_000000_create_users_table.php、2014_10_12_100000_create_password_resets_table.php、2019_08_19_000000_create_failed_jobs_table.php、2019_12_14_000000_create_personal_access_tokens_table.php - 多语言翻译文件:
resources/lang/en/目录下的所有默认语言文件
注意:删除文件后必须同步清理对应代码引用,否则会触发代码报错:
- 删除User模型后,需要修改
config/auth.php中默认的用户模型指向配置,若完全不需要认证功能,可直接删除routes/web.php中引入认证路由的代码段- 删除
bootstrap.js后,需要同步修改webpack.mix.js中对该文件的打包配置,避免前端编译报错- 删除迁移文件后,需要同步清理
config/目录下和认证、任务队列、授权相关的冗余配置项
方案2:创建时跳过初始化脚本减少冗余配置
在执行 composer create-project 命令时追加 --no-scripts 参数,命令格式为:composer create-project --prefer-dist laravel/laravel projectname --no-scripts
这个参数会跳过安装完成后自动执行的环境变量配置、权限设置、应用密钥生成等初始化脚本,不会修改默认骨架里的内置文件,但可以避免生成和冗余功能绑定的附加配置项。
注意:使用该参数创建项目后,需要手动复制
.env.example为.env文件,手动执行php artisan key:generate生成应用密钥,否则项目无法正常运行。
方案3:使用自定义精简骨架长期复用
将手动清理完成无冗余的Laravel 8 骨架文件保存到本地路径或者私有composer仓库,后续创建项目时直接用自定义骨架的路径/仓库地址替换官方的laravel/laravel包地址,这样生成的项目天生就不包含你不需要的冗余文件,适合重复创建同类型项目的场景。
内容的提问来源于stack exchange,提问作者Chef Tony

