前端构建工具多环境配置,开发与生产

手把手教你搞定前端多环境配置,开发和生产两不误!

作为一名前端老鸟,今天和大家分享一下我在项目中配置多环境的心得,保证实用不踩坑!

为什么要区分开发和生产环境?

最近接手了一个老项目,所有环境配置都写在一起,每次发布都提心吊胆。结果有一次不小心把开发环境的API地址打包到了生产,直接导致用户访问不了服务(惨痛的教训啊!)。

所以,合理区分环境配置真的很重要:

  1. **开发环境**:需要调试工具、mock数据、热更新

  2. **测试环境**:需要有完整日志、测试专用API

  3. **生产环境**:需要性能优化、CDN地址、关键监控

主流构建工具配置方案

  1. Webpack环境变量

我们团队主要在Webpack项目中这样配置:

```javascript

// webpack.config.js

const webpack = require('webpack');

const devConfig = {

plugins: [

new webpack.DefinePlugin({

'process.env.NODE_ENV': JSON.stringify('development'),

'API_BASE': JSON.stringify('https://dev.api.com')

})

]

};

const prodConfig = {

plugins: [

new webpack.DefinePlugin({

'process.env.NODE_ENV': JSON.stringify('production'),

'API_BASE': JSON.stringify('https://api.com')

})

]

};

module.exports = (env) => {

return env.production ? prodConfig : devConfig;

};

```

执行构建命令:

```bash

开发环境

webpack serve

生产环境

webpack --env production

```

  1. Vite的环境配置更优雅

自从改用Vite后,配置变得超级简单:

  1. 创建环境文件:

```

  • .env.development

  • .env.production

```

  1. 文件内容示例:

```ini

.env.development

VITE_API_BASE=https://dev.api.com

VITE_DEBUG=true

```

```ini

.env.production

VITE_API_BASE=https://api.com

VITE_DEBUG=false

```

  1. 代码中直接使用:

```javascript

console.log(import.meta.env.VITE_API_BASE);

```

更棒的是Vite会帮你自动注入环境变量,不用额外配置!

实际开发中的血泪经验

  1. **不要在前端硬编码敏感信息**:曾经有个同事把数据库密码写在js变量里,结果被爬虫抓取(后果很严重)

  2. **善用环境判断**:

```javascript

if (import.meta.env.DEV) {

// 开发环境专用代码

initMockData();

}

```

  1. **跨团队协作加注释**:

```javascript

/**

* @WARNING 生产环境会自动删除console.log

* 调试请使用console.info

*/

```

  1. **CI/CD集成**:在Jenkins或GitHub Actions中自动判断分支,切换构建环境

我的推荐做法

  1. 首选**Vite + .env文件**方案(最简单)

  2. 复杂项目可考虑**配置文件动态加载**:

```javascript

// config.js

const env = process.env.NODE_ENV;

const configs = {

development: require('./dev.config'),

production: require('./prod.config')

};

module.exports = configsenv;

```

  1. 考虑使用**TypeScript类型**确保安全:

```typescript

interface EnvConfig {

API_BASE: string;

DEBUG: boolean;

}

const config: EnvConfig = {

API_BASE: import.meta.env.VITE_API_BASE,

DEBUG: import.meta.env.VITE_DEBUG === 'true'

}

```

总结

环境配置看似简单,实则影响深远。一个好的配置方案应该:

  • 开发时提供充分辅助

  • 构建时自动适配环境

  • 上线后绝对安全

希望本文能帮到正在配置环境的你!如果有更好的方案欢迎评论区讨论~

相关推荐
一碗白开水一6 分钟前
Day 5 · 弹性 | 微观
java·前端·数据库
Lsx_14 分钟前
微信支付接入全流程:JSAPI支付、小程序支付与H5支付
前端·javascript·全栈
OpenTiny社区31 分钟前
React 正式登场!GenUI SDK v1.4.0 三框架渲染、出码与 Agent 生态重磅升级~
前端·ai编程
试图让你心动40 分钟前
【无标题】
前端·javascript·vue.js
Hilaku43 分钟前
为什么每个前端都应该拥有一个自己的独立博客?
前端·javascript·程序员
燕落南枝1 小时前
CSS 后代选择器与子代选择器:从入门到实战
前端·css
Amos_Web1 小时前
Rspack 源码解析(二十八):HtmlRspackPlugin 如何把模板变成带资源标签的最终产物
前端
马可家的菠萝1 小时前
个人知识库怎么建?从一个正在学的技术主题开始
前端·笔记·知识管理·个人知识库
几何心凉1 小时前
端到端具身交互智能正式上线:让 AI 通过屏幕和机器人,真正走进现实世界
前端·人工智能·实时互动·机器人·交互
tryCbest2 小时前
Vue3——第 6 篇:事件处理与表单绑定——v-on 与 v-model
前端·javascript·vue.js