You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Webpack根据不同环境加载对应的json配置文件

实现方案

推荐使用Webpack内置插件实现,无需额外安装依赖,完全适配你已有的分环境Webpack配置逻辑:

步骤1:准备配置文件

确认你已在项目对应目录存放两份环境配置文件:

  • appsettings.development.json:开发环境配置
  • appsettings.production.json:生产环境配置

步骤2:配置Webpack替换规则

在webpack.config.dev.js的plugins数组中新增如下配置:

const webpack = require('webpack');
module.exports = {
  // 保留你原有所有配置
  plugins: [
    new webpack.NormalModuleReplacementPlugin(/.*\/appsettings\.json$/, (resource) => {
      resource.request = resource.request.replace(/appsettings\.json$/, `appsettings.development.json`);
    }),
    // 保留你原有其他插件配置
  ]
}

在webpack.config.prod.js中做相同配置,仅需把替换的文件名改为appsettings.production.json即可。

步骤3:代码中统一导入

在TypeScript代码中直接写固定导入语句即可,Webpack构建时会自动根据当前环境替换为对应配置文件:

import config from '../path/to/appsettings.json';
// 直接使用config作为全局配置即可

步骤4:适配TypeScript类型

为了避免TS识别不到配置文件类型报错,可以在项目类型声明目录(通常为@types文件夹)新增appsettings.d.ts文件:

declare module '*/appsettings.json' {
  // 根据你的实际配置字段定义类型
  interface AppConfig {
    apiBaseUrl: string;
    enableDebugLog: boolean;
    // 补充其他配置字段类型
  }
  const config: AppConfig;
  export default config;
}

替代方案:使用resolve.alias实现

如果你不想使用插件,也可以通过分环境配置别名实现:
在webpack.config.dev.js中新增别名配置:

const path = require('path');
module.exports = {
  resolve: {
    alias: {
      '@/appsettings.json': path.resolve(__dirname, '你的配置文件存放路径/appsettings.development.json')
    }
  }
}

生产环境配置同理,将别名指向appsettings.production.json,导入时直接使用别名路径即可:

import config from '@/appsettings.json';

注意事项

不要使用模板字符串的动态导入语法,Webpack静态构建时无法识别动态路径,会把所有匹配的JSON文件都打包进产物,既会增大包体积也可能泄露不同环境的敏感配置。

内容的提问来源于stack exchange,提问作者Jacek Ratajewski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:36:04