composer create-project 是创建 laravel 项目的唯一可靠起点,它明确拉取骨架、安装依赖、执行初始化脚本;必须指定版本约束(如 laravel/laravel:^11.0),否则可能报错或退回到旧版,且国内镜像滞后时应临时切回官方源。

composer create-project 是创建 Laravel 项目的唯一可靠起点
别用 laravel new,它在 CI/CD 或 Docker 中容易静默失败,比如漏掉 vendor/autoload.php;create-project 明确拉取骨架、装依赖、执行初始化脚本,出错能立刻定位。
必须带版本约束,否则 Composer 可能报 Could not find package 或退回到旧版:
-
composer create-project laravel/laravel:^11.0 myapp(Laravel 11) -
composer create-project laravel/laravel:^10.0 myapp(Laravel 10) - 国内镜像滞后?临时切回官方源:
composer config -g repo.packagist composer https://packagist.org
项目生成后立刻检查三件事:确认 .env 存在且 APP_KEY 已生成、运行 php artisan migrate(Breeze/Jetstream 依赖迁移表)、执行 npm install && npm run build(不是 dev,首次初始化必须构建产出)。
laravel/mix 是前端构建链路的 PHP 封装,不是前端依赖本身
Composer 只该装 laravel/mix,不该装 bootstrap、vue 这类 npm 包。强行 composer require bootstrap 实际走的是 Asset Packagist 映射,结果是:
- 版本号错位(npm 的
5.3.3变成5.3.3.0) - 文件结构扁平(
vendor/npm-asset/bootstrap/dist/),无法按需 import - 脱离
package-lock.json,CI 构建时版本脱节、tree-shaking 失效
正确路径是:
-
composer require laravel/mix→ 锁住构建能力 -
npm install bootstrap @popperjs/core→ 在package.json声明真实依赖 -
resources/js/app.js里写import 'bootstrap'→ 由 Mix 编译打包
php artisan ui 命令只生成骨架,不处理构建工具或认证逻辑
php artisan ui bootstrap 这类命令只是把预设模板复制进 resources/,它不安装 Node 依赖、不配置 Vite/Webpack、不生成路由或控制器——你得自己补全。
常见卡点:
- 执行完没反应?先确认是否已装
laravel/ui:composer require laravel/ui --dev - 跑
npm run dev报错Cannot find module 'vite'?说明脚手架没配 Vite,得手动npm install或删掉vite.config.js改用 Mix - 加了
--auth参数但登录页 404?因为php artisan ui bootstrap --auth只放视图和 CSS,不注册路由、不建数据库表,必须额外跑php artisan migrate和php artisan serve
注意:Laravel 11 已弃用 laravel/ui,改推 laravel/breeze 或 laravel/jetstream;若坚持用 UI,请确保 Laravel 版本 ≤ 10.x。
npm run build 和 npm run dev 的行为差异直接影响部署结果
npm run dev 启动本地开发服务器,带 HMR 和 source map,输出未压缩资源,适合调试;npm run build 才真正生成生产就绪的 public/css/app.css 和 public/js/app.js,且默认启用压缩、scope hoisting、CSS 提取。
容易被忽略的细节:
- CI/CD 部署脚本里写的是
npm run dev?那 public 目录下压根没产出,页面必然白屏 - 修改了
resources/sass/app.scss但样式没更新?确认npm run build是否成功,再检查public/mix-manifest.json里路径是否匹配 - Vite 用户注意:
npm run build输出到public/build/,而 Mix 默认输出到public/,混用时要同步调整APP_URL和<script></script>引入路径
构建产物一旦生成,就不再依赖 Node 环境;但如果你在 webpack.mix.js 里写了动态 require 或环境变量注入,就得确保 MIX_* 变量已在 .env 中定义并被 npm run build 正确读取。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











