最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文徹底搞懂項目中?dist?到底是什么

 更新時間:2026年05月03日 10:46:01   作者:煙鎖池塘柳0  
dist是distribution的縮寫,表示可以直接交付給用戶、部署到服務(wù)器、發(fā)布到倉庫的最終產(chǎn)物,這篇文章主要介紹了項目中dist到底是什么的相關(guān)資料,文中通過代碼介紹非常詳細(xì),需要的朋友可以參考下

前言

在很多項目里,你會反復(fù)看到一個名字:dist。它可能是一個文件夾(dist/),也可能出現(xiàn)在命令里(npm run build 之后生成 dist),甚至在 Python 打包發(fā)布時也會出現(xiàn)(dist/*.whl、dist/*.tar.gz)。

這篇文章就把 dist 講透:概念、常見場景、生成方式、配置方法、部署與最佳實踐、常見坑 一次說清。

1. dist 是什么?一句話解釋

dist = distribution(分發(fā)/發(fā)布)的縮寫。

通常表示:可以直接交付給用戶、部署到服務(wù)器、發(fā)布到倉庫的“最終產(chǎn)物”。

對比一下更直觀:

  • src/:源代碼(給開發(fā)者看的)
  • dist/:構(gòu)建后的產(chǎn)物(給機器部署/給用戶訪問的)

2. dist 最常見的 3 大出現(xiàn)位置

2.1 前端工程里的 dist:構(gòu)建輸出目錄(最常見)

以 Vue/React/Vite/Webpack 為例:

  • 你寫的是:JS/TS、Vue/JSX、Sass/Less、圖片等源碼
  • 構(gòu)建工具會做:編譯、打包、壓縮、Hash 命名、代碼分割……
  • 最終輸出到:dist/

dist/ 里通常有什么?

  • index.html
  • assets/(hash 后的 JS/CSS/圖片資源)
  • *.js、*.css(壓縮、合并、分塊后的產(chǎn)物)
  • sourcemap(如果你開了 sourceMap

? dist 可以直接丟到 Nginx/靜態(tài)托管/CDN 上跑

? src 不行(瀏覽器看不懂 TS、也不認(rèn)識你的模塊依賴關(guān)系)

2.2 npm/組件庫里的 dist:編譯后的庫產(chǎn)物

如果你寫的是一個組件庫/SDK,發(fā)布到 npm 時,常見做法是:

  • src/:TypeScript 源碼
  • dist/:編譯后的 JS(CommonJS/ESM)、類型聲明 .d.ts

因為 npm 上的使用者并不一定能編譯你的 TS,所以你通常需要發(fā)布 dist

常見結(jié)構(gòu)示例:

dist/
  index.esm.js
  index.cjs.js
  index.d.ts

2.3 Python 打包發(fā)布里的 dist:發(fā)布包目錄

Python 項目執(zhí)行打包時(例如 python -m buildsetup.py sdist bdist_wheel),會生成:

  • dist/*.whl:wheel 包(推薦)
  • dist/*.tar.gz:源碼包(sdist)

這些文件就是你上傳到 PyPI(或私有源)的最終發(fā)布產(chǎn)物。

3. dist 是怎么生成的?(以“前端構(gòu)建”為例)

一個典型的構(gòu)建流程大概是:

  1. 編譯:TS -> JS,Sass/Less -> CSS,Vue/JSX 轉(zhuǎn)換
  2. 打包:把模塊依賴打成可運行的 bundle
  3. 壓縮:去掉空格、改變量名、Tree Shaking
  4. 資源處理:圖片/字體復(fù)制、Base64 內(nèi)聯(lián)、hash 命名
  5. 生成 HTML:自動注入腳本、處理 publicPath
  6. 輸出到 dist:可部署的靜態(tài)站點

所以 dist 的核心特點就是:“可運行、可發(fā)布、可部署”

4. 不同工具里 dist 的默認(rèn)規(guī)則與配置

4.1 Vite:默認(rèn)dist/,可用outDir修改

vite.config.ts

import { defineConfig } from "vite";

export default defineConfig({
  build: {
    outDir: "dist",     // 輸出目錄
    assetsDir: "assets",// 靜態(tài)資源目錄
    sourcemap: false,   // 是否生成 sourcemap
  },
});

構(gòu)建命令:

npm run build

4.2 Webpack:通過output.path決定輸出目錄

webpack.config.js

const path = require("path");

module.exports = {
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "js/[name].[contenthash].js",
    clean: true, // 構(gòu)建前清理 dist
  },
};

4.3 Vue CLI:通過outputDir配置

vue.config.js

module.exports = {
  outputDir: "dist",
  assetsDir: "static",
};

4.4 Angular:構(gòu)建輸出也是 dist(但通常帶項目名)

常見輸出類似:

dist/<project-name>/

5. dist 要不要提交到 Git?(高頻問題)

答案:看場景,但大多數(shù)情況下不提交。

一般業(yè)務(wù)前端項目(網(wǎng)站/管理后臺)

  • 不提交 dist
  • 因為 dist 可由 CI/CD 或本地構(gòu)建生成
  • 提交 dist 會導(dǎo)致倉庫膨脹、沖突頻繁

建議在 .gitignore 中加入:

dist/

必須提交 dist 的常見場景

  • 你用 GitHub Pages 直接托管構(gòu)建產(chǎn)物(有時會把產(chǎn)物放到 gh-pages 分支)
  • 你發(fā)布的是 npm 包,需要包含編譯后的產(chǎn)物(通常發(fā)布到 npm,而不是提交到 git 主分支)
  • 某些歷史項目/無構(gòu)建環(huán)境的服務(wù)器,只能手動上傳 dist

6. dist 與 build 有什么區(qū)別?

有的項目叫 dist/,有的叫 build/,本質(zhì)都指 構(gòu)建產(chǎn)物,區(qū)別通常是“約定俗成”:

  • dist:強調(diào)“分發(fā)/發(fā)布(distribution)”
  • build:強調(diào)“構(gòu)建過程的結(jié)果(build output)”

比如:

  • CRA(Create React App)默認(rèn) build/
  • Vite/Vue CLI 常見 dist/

7. dist 部署實踐:你應(yīng)該怎么用它?

7.1 Nginx 靜態(tài)部署(最經(jīng)典)

把 dist 上傳到服務(wù)器某個目錄,例如:

/usr/share/nginx/html/

SPA(單頁應(yīng)用)還要配 history 路由回退:

location / {
  try_files $uri $uri/ /index.html;
}

7.2 CDN + 靜態(tài)托管

dist 中的 assets 一般帶 hash,非常適合 CDN 緩存:

  • app.8f3a1c.js(文件名帶 hash)
  • 更新版本就會變文件名,緩存自然失效

8. 常見坑與排查思路

坑 1:dist 空的 / 沒生成

  • 檢查構(gòu)建命令是否正確:npm run build
  • 看控制臺是否報錯(依賴缺失、TS 報錯、內(nèi)存不足)
  • 確認(rèn)輸出目錄沒被改到別的名字(如 build/

坑 2:部署后刷新 404(SPA 常見)

  • Nginx/托管平臺沒做 index.html 回退
  • 解決:配置 try_files 或平臺的重寫規(guī)則

坑 3:靜態(tài)資源路徑不對(圖片/CSS 404)

  • base / publicPath 配錯

  • 例如部署在子路徑 /admin/ 下,需要配置:

    • Vite:base: "/admin/"

坑 4:dist 里 sourcemap 泄露源碼

  • 生產(chǎn)環(huán)境一般關(guān)閉 sourcemap
  • 或者只對內(nèi)部環(huán)境開放 sourcemap 下載

9. 總結(jié)

  • dist 是 distribution 的縮寫,代表“最終可發(fā)布/可部署的產(chǎn)物”
  • 前端里 dist 通常是 構(gòu)建后的靜態(tài)站點
  • 組件庫里 dist 常是 編譯后的 JS + 類型聲明
  • Python 里 dist 是 打包后的 wheel/sdist 發(fā)布文件
  • 多數(shù)業(yè)務(wù)項目 不建議把 dist 提交到 Git,而是交給構(gòu)建流程生成
  • 部署 dist 時重點關(guān)注:路由回退(SPA)、資源路徑(base/publicPath)、緩存策略(hash)

到此這篇關(guān)于項目中dist到底是什么的文章就介紹到這了,更多相關(guān)項目中dist詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

东山县| 东明县| 临泽县| 右玉县| 顺平县| 大理市| 武平县| 屯门区| 呈贡县| 和林格尔县| 宜丰县| 奇台县| 曲阜市| 虹口区| 潮安县| 芮城县| 莱州市| 探索| 无为县| 怀柔区| 湘潭市| 石河子市| 合山市| 灵台县| 安达市| 蒲江县| 思南县| 贵南县| 新绛县| 宿州市| 伊春市| 绥滨县| 杭州市| 寿光市| 宁波市| 抚顺县| 房产| 政和县| 浦东新区| 连城县| 杭锦旗|