原文筆記
13 构建、部署和工程化
工程化不是高级项目才需要。只要你希望项目能稳定运行、多人协作、可以上线,就需要理解基本工具链。
本章目标:你能理解 Vite、package.json、开发服务器、生产构建、环境变量、部署刷新 404 和项目目录组织。
1. Vite 做了什么
开发时:
npm run dev
Vite 提供:
- 本地开发服务器。
- 热更新。
- Vue 单文件组件编译。
- 模块导入处理。
- 错误提示。
生产构建时:
npm run build
Vite 会:
- 编译
.vue文件。 - 压缩 JS 和 CSS。
- 拆分资源。
- 生成
dist/。
2. package.json 是什么
package.json 是项目说明书和命令表。
{
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"test": "vitest run"
},
"dependencies": {
"vue": "^3.5.35"
},
"devDependencies": {
"vite": "^8.0.16"
}
}
字段解释:
scripts:可运行命令。dependencies:生产运行需要的依赖。devDependencies:开发和构建需要的依赖。
运行:
npm run dev
本质上会执行:
vite
3. npm install 做了什么
npm install
它会:
- 根据
package.json和package-lock.json安装依赖。 - 生成
node_modules。 - 确保项目能运行。
node_modules 很大,不应该手动编辑,也不应该提交到 Git。
package-lock.json 记录具体安装版本,团队项目应该提交它,保证大家依赖一致。
4. dev、build、preview 区别
dev:
npm run dev
用于开发。速度快,有热更新,不是生产产物。
build:
npm run build
生成生产文件到 dist/。
preview:
npm run preview
在本地预览 dist/,检查构建产物能否正常运行。
不要把 npm run dev 当部署方式。上线应该部署构建产物。
5. dist 是什么
构建后:
dist/
index.html
assets/
index-xxxx.js
index-xxxx.css
这些文件就是浏览器最终需要的静态资源。
部署静态站点时,通常把 dist/ 交给平台。
6. 环境变量
Vite 暴露给前端的变量通常以 VITE_ 开头:
VITE_API_BASE_URL=https://api.example.com
使用:
const baseUrl = import.meta.env.VITE_API_BASE_URL
注意:前端环境变量不是秘密。只要被打包进前端,用户就可能看到。
常见文件:
.env
.env.development
.env.production
不要提交包含秘密的 .env.local。
7. 单页应用刷新 404
Vue Router 使用 history 模式时,URL 可能是:
/lessons/core
如果用户直接刷新,浏览器会向服务器请求 /lessons/core。
服务器如果不知道这个路径,就返回 404。
解决:服务器把未知路径都返回 index.html。
未知路径 -> index.html -> Vue Router 接管
很多部署平台叫:
- fallback。
- rewrite。
- SPA fallback。
8. 项目目录组织
推荐:
src/
assets/
components/
composables/
data/
router/
services/
stores/
types/
views/
职责:
assets:图片、全局 CSS 等静态资源。components:可复用组件。views:路由页面组件。composables:组合式函数。data:本地静态数据。router:路由配置。services:请求接口封装。stores:Pinia。types:共享 TypeScript 类型。
9. README 应该写什么
一个项目 README 至少写:
- 项目做什么。
- 技术栈。
- 如何安装。
- 如何运行。
- 如何测试。
- 如何构建。
- 目录结构。
- 环境变量说明。
示例:
# Project Name
## Setup
```powershell
npm install
npm run dev
```
## Scripts
- `npm run dev`
- `npm run test`
- `npm run build`
好的 README 能让新同事少问很多重复问题。
10. 提交前检查
最小检查:
npm run test
npm run build
如果项目有 lint:
npm run lint
如果改了页面:
- 打开本地页面。
- 点一遍关键流程。
- 检查控制台错误。
- 检查移动端布局。
11. 常见工程化错误
错误一:删除 package-lock
这会让团队依赖版本更不稳定。一般不要随便删。
错误二:提交 node_modules
node_modules 应该由 npm install 生成,不应该提交。
错误三:构建前没跑测试
测试能提前发现逻辑问题,构建能发现语法和打包问题,两者都重要。
错误四:把开发服务器地址当生产地址
http://localhost:5173 只适合本地开发。线上应该使用部署平台提供的域名。
本章练习
- 解释
npm run dev和npm run build区别。 - 运行
npm run build,观察dist。 - 运行
npm run preview,预览构建产物。 - 写一份项目 README 大纲。
- 解释 SPA 刷新 404 的原因和解决思路。
- 判断哪些文件应该提交,哪些不应该提交。