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

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

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

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

最近接手了一个老项目,所有环境配置都写在一起,每次发布都提心吊胆。结果有一次不小心把开发环境的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'

}

```

总结

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

  • 开发时提供充分辅助

  • 构建时自动适配环境

  • 上线后绝对安全

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

相关推荐
kyriewen11 小时前
别再乱用useEffect了——你写的10个里有8个不该存在
前端·javascript·react.js
Ivanqhz11 小时前
Rust &‘static str浅析
java·前端·javascript·rust
IT_陈寒11 小时前
SpringBoot这个分页坑,我踩了三天才爬出来
前端·人工智能·后端
颜酱11 小时前
05 | 召回前置准备:根据业务数据库生成各数据库(读取配置阶段)
前端·人工智能·后端
zandy101112 小时前
衡石 Agentic BI的ReAct 推理框架在 Agentic BI 中的工程化实践
前端·javascript·react.js
罗超驿12 小时前
JavaEE进阶之路:从Web架构原理到HTML标签全解析
前端·html·web·javaee
西安小哥12 小时前
从前端到AI工程师:一场跨越鸿沟的真实蜕变之旅
前端
Prince41812 小时前
侧边栏收起缩放适配方案
前端
用户77833661321112 小时前
serpbase + Cloudflare R2 边缘持久化实战
前端·人工智能
এ慕ོ冬℘゜13 小时前
jQuery attr() 方法超详细讲解:属性获取、赋值、实战踩坑全解
前端·javascript·jquery