Vite生产环境防源码泄露的核心是禁用SourceMap:明确配置build.sourcemap为false,避免使用'hidden'模式,并验证dist目录无.map文件、线上访问返回404。

在 TypeScript 项目中使用 Vite 时,防止生产环境暴露源码的核心是:**不生成 SourceMap,或生成但不让浏览器加载到**。Vite 默认开发环境开启 SourceMap、生产环境关闭,但需确认配置并防范意外泄露。
✅ 关键配置:禁用生产 SourceMap
Vite 的 build.sourcemap 默认为 false,即生产构建不生成 .map 文件。但必须显式设为 false 避免被其他插件或环境变量覆盖:
- 在
vite.config.ts中明确写死:build: { sourcemap: false } - 若使用多环境配置(如
mode: 'production'),确保该配置在所有生产分支生效 - 检查是否有插件(如
@vitejs/plugin-react-swc或自定义插件)悄悄启用了 sourcemap
⚠️ 常见泄露风险点
即使设了 sourcemap: false,仍可能因以下原因暴露源码:
-
误配
sourcemap: 'hidden':它会生成 .map 文件,只是不写sourceMappingURL注释——但若文件被直接访问(如通过 CDN 路径猜测),仍可下载 -
CI/CD 构建脚本覆盖配置:比如命令行传入
--sourcemap或环境变量VITE_BUILD_SOURCERMAP=true -
打包产物残留 .map 文件:检查 dist 目录是否真没出现任何
.js.map或.ts.map文件
? 验证是否真正安全
部署后快速自查三步:
- 打开浏览器开发者工具 → Sources 面板 → 展开你的 JS 文件,看是否显示原始
.ts文件(有则已泄露) - 直接访问
https://your-site.com/assets/index.xxxxxx.js.map,应返回 404 或 403 - 用 curl 或浏览器访问 JS 文件内容,末尾不应出现
//# sourceMappingURL=index.js.map
? 进阶防护(适合高敏感项目)
如果团队需要内部错误监控(如 Sentry),又不想公开 .map 文件:
- 构建时设
sourcemap: true,但用脚本把 .map 文件单独上传至私有对象存储(如 AWS S3 + IAM 鉴权) - 确保 Nginx / CDN 层拦截所有
*.map请求,统一返回 404 - Sentry SDK 上传时指定私有 URL,前端完全不接触 .map 文件
不复杂但容易忽略,关键就在 build 阶段的开关和部署后的验证。


















