在很多项目里,你会反复看到一个名字:dist。它可能是一个文件夹(dist/),也可能出现在命令里(npm run build 之后生成 dist),甚至在 Python 打包发布时也会出现(dist/*.whl、dist/*.tar.gz)。这篇文章就把 dist 讲透:概念、常见场景、生成方式、配置方法、部署与最佳实践、常见坑一次说清。
1. dist 是什么?一句话解释
dist = distribution(分发/发布)的缩写。通常表示:可以直接交付给用户、部署到服务器、发布到仓库的'最终产物'。
对比一下更直观:
src/:源代码(给开发者看的)dist/:构建后的产物(给机器部署/给用户访问的)
2. dist 最常见的 3 大出现位置
2.1 前端工程里的 dist:构建输出目录(最常见)
以 Vue/React/Vite/Webpack 为例:
- 你写的是:JS/TS、Vue/JSX、Sass/Less、图片等源码
- 构建工具会做:编译、打包、压缩、Hash 命名、代码分割……
- 最终输出到:
dist/
dist/ 里通常有什么?
index.htmlassets/(hash 后的 JS/CSS/图片资源)*.js、*.css(压缩、合并、分块后的产物)- sourcemap(如果你开了
sourceMap)
✅ dist 可以直接丢到 Nginx/静态托管/CDN 上跑
❌ src 不行(浏览器看不懂 TS、也不认识你的模块依赖关系)
2.2 npm/组件库里的 dist:编译后的库产物
如果你写的是一个组件库/SDK,发布到 npm 时,常见做法是:
src/:TypeScript 源码dist/:编译后的 JS(CommonJS/ESM)、类型声明.d.ts
因为 npm 上的使用者并不一定能编译你的 TS,所以你通常需要发布 dist。
常见结构示例:
dist/
index.esm.js
index.cjs.js
index.d.ts
2.3 Python 打包发布里的 dist:发布包目录
Python 项目执行打包时(例如 python -m build 或 setup.py sdist bdist_wheel),会生成:
dist/*.whl:wheel 包(推荐)dist/*.tar.gz:源码包(sdist)
这些文件就是你上传到 PyPI(或私有源)的最终发布产物。
3. dist 是怎么生成的?(以'前端构建'为例)
一个典型的构建流程大概是:
- 编译:TS -> JS,Sass/Less -> CSS,Vue/JSX 转换
- :把模块依赖打成可运行的 bundle

