
参考资料:
1. 区分不同环境
1.1 ①创建环境变量文件
创建 3 个.env 文件,统一前缀VITE_(Vite 仅暴露这个前缀的变量),放在项目根目录下。
1 2 3 4 5
| # .env.development (开发环境,npm run dev用) NODE_ENV=development VITE_API_BASE_URL=http://dev-api.xxx.com VITE_ENV_NAME=开发环境 VITE_OPEN_DEBUG=true
|
1 2 3 4 5
| # .env.test (测试环境,npm run testbuild用) NODE_ENV=production # 测试环境打包也用production模式 VITE_API_BASE_URL=http://test-api.xxx.com VITE_ENV_NAME=测试环境 VITE_OPEN_DEBUG=true
|
1 2 3 4 5
| # .env.production (生产环境,npm run build用) NODE_ENV=production VITE_API_BASE_URL=http://prod-api.xxx.com VITE_ENV_NAME=生产环境 VITE_OPEN_DEBUG=false
|
1.2 ②修改 vite.config.js
读取对应环境变量,配置打包、代理等差异化逻辑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue'
export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd())
return { plugins: [vue()], base: env.VITE_BASE_URL || '/', server: { proxy: { '/api': { target: env.VITE_API_BASE_URL, changeOrigin: true, rewrite: path => path.replace(/^\/api/, '') } } }, build: { outDir: mode === 'test' ? 'dist-test' : 'dist', minify: env.NODE_ENV === 'production' ? 'terser' : 'esbuild', terserOptions: { compress: env.VITE_OPEN_DEBUG ? {} : { drop_console: true, drop_debugger: true } } } } })
|
test 环境如果使用差异化包名称,如 dist-test,记得 .gitignore 中添加忽略该目录 dist-test。
1.3 ③配置 package.json
添加不同环境的运行 / 打包脚本,--mode 指定环境,核心,快速切换环境
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| { "scripts": { "dev": "vite", "test": "vite --mode test", "testbuild": "vite build --mode test", "testpreview": "vite preview --outDir dist-test --port 8080", "build": "vite build", "preview": "vite preview" } }
|
使用命令:
1 2 3 4
| npm run testbuild
npm run testpreview
|
1.4 项目中使用环境变量
业务代码里区分环境直接通过import.meta.env获取,不用额外引入
1 2 3 4 5
| const request = axios.create({ baseURL: import.meta.env.VITE_API_BASE_URL, timeout: 5000 })
|
1 2 3 4 5
| if (import.meta.env.VITE_OPEN_DEBUG) { console.log('当前环境:', import.meta.env.VITE_ENV_NAME) console.log('BASE_URL:', import.meta.env.VITE_API_BASE_URL) }
|
1.5 关键补充(避坑)
- 环境变量只能是字符串,布尔值要自己转(如
VITE_OPEN_DEBUG === 'true')
.env文件不要提交敏感信息(如密钥),可建.env.local(git 忽略)
- 测试环境若需本地运行,可加脚本:
"test": "vite --mode test"
1.6 运行&打包
- 本地开发:
npm run dev
- 打测试包:
npm run testbuild
- 打生产包:
npm run build
2. 开发流程
2.1 git
使用 git bash 客户端工具。
命令使用速查 【项目管理】 >> 【Git】 下的内容。
.gitignore 参考
适配前端(React/Vue/Node.js)、全栈项目;若需要提交package-lock.json,注释掉对应的忽略行(推荐保留 lock 文件,保证多人开发依赖版本一致)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
| # ========================= 系统通用文件 ========================= # macOS系统文件 .DS_Store .AppleDouble .LSOverride Icon ._* .DocumentRevisions-V100 .fseventsd .Spotlight-V100 .TemporaryItems .Trashes .VolumeIcon.icns .com.apple.timemachine.donotpresent .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk
# Windows系统文件 Thumbs.db ehthumbs.db Desktop.ini $RECYCLE.BIN *.cab *.msi *.msix *.msm *.msp *.lnk *.tmp *.bak *.swp *.swo *.log *.cache
# Linux系统文件 *~ .fuse_hidden* .directory .Trash-* .nfs*
# ========================= 编辑器/IDE配置 ========================= # VSCode编辑器(重点) .vscode/ !.vscode/extensions.json # 保留推荐插件配置(可选) !.vscode/settings.json # 保留项目专属配置(可选) !.vscode/tasks.json # 保留任务配置(可选) !.vscode/launch.json # 保留调试配置(可选) .idea/ # WebStorm/IDEA配置 *.suo *.ntvs* *.njsproj *.sln *.sw?
# ========================= 语言/框架专属 ========================= # Node.js/JavaScript(前端/后端通用) # 依赖包(核心,必加) node_modules/ # 包管理锁文件(根据团队规范选择是否忽略,建议保留lock文件) # package-lock.json # 不建议忽略,lock文件保证依赖版本一致 # yarn.lock # pnpm-lock.yaml # 编译/构建产物 dist/ build/ out/ coverage/ # 测试覆盖率报告 lib/ # 编译后的库文件 es/ # ES模块产物 umd/ # UMD模块产物 temp/ # 临时构建目录 *.min.js # 压缩后的JS *.min.css # 压缩后的CSS
# TypeScript *.tsbuildinfo typings/ types/ # 手动声明文件(若自动生成则忽略) *.d.ts # 若手动写声明文件则注释这行
# Vue项目 *.vue.js .vuepress/dist/ .nuxt/ .vue/
# React项目 .env.local .env.development.local .env.test.local .env.production.local .next/ .pnp/ .pnp.js
# ========================= 包管理/发布 ========================= # npm/yarn/pnpm npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* lerna-debug.log* .pnpm-store/ .yarn/cache/ .yarn/unplugged/ .yarn/build-state.yml .yarn/install-state.gz .pnp.*
# 发布包相关 *.tgz *.tar.gz package/ release/
# ========================= 环境/敏感信息 ========================= # 环境变量文件(核心,必加,避免泄露密钥) .env .env.* !.env.example # 保留示例环境文件 # 敏感配置 config/local.js config/prod.js *.pem *.key *.cert secrets/ credentials/
# ========================= 测试/日志 ========================= # 测试文件/报告 test-results/ junit.xml *.coverage # 日志文件 logs/ *.log access.log error.log
# ========================= 其他 ========================= # 缓存文件 .cache/ .eslintcache .stylelintcache # 上传/下载文件 uploads/ downloads/ # 压缩包 *.zip *.rar *.7z # 数据库文件 *.db *.sqlite *.sqlite3 # 进程文件 *.pid *.seed
|
2.2 开发流程
瀑布流开发、敏捷开发。
迭代:Daily scrum(每日站会-进度/风险点)、看板、提测、bug修复、上线。
2.3 云服务器
阿里云、腾讯云、华为云、百度云等等。
2.4 nginx
参考 【服务器】>>【Nginx】章节内容。
其中windows服务器中对于 nginx 的安装最好用免安装的版本,启动方式与linux一致。