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

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

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

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

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

```

  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'

}

```

总结

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

  • 开发时提供充分辅助

  • 构建时自动适配环境

  • 上线后绝对安全

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

相关推荐
c***V3232 小时前
前端构建工具发展,esbuild与swc性能
前端
U***e632 小时前
前端构建工具迁移,Webpack到Vite
前端·webpack·node.js
Ustinian_3102 小时前
【HTML】前端工具箱实现【文本处理/JSON工具/加解密/校验和/ASCII/时间戳转换等】【附完整源代码】
前端·html·json
s9123601012 小时前
【Rust】使用lldb 调试core dump
前端·javascript·rust
前端开发呀3 小时前
🔥 99%由 Trae AI 开发的 React KeepAlive 组件,竟然如此优雅!✨
前端·trae
不是鱼3 小时前
Canvas学习笔记(一)
前端·javascript·canvas
我有一棵树3 小时前
React 中 useRef 和 useState 的使用场景区别
前端·javascript·react.js
喵个咪3 小时前
Qt6 QML 实现DateTimePicker组件
前端·qt
yinuo3 小时前
CSS奇技淫巧:用你意想不到的4种属性实现裁剪遮罩效果
前端