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

一文徹底搞懂項(xiàng)目中?dist?到底是什么

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

前言

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

這篇文章就把 dist 講透:概念、常見(jiàn)場(chǎng)景、生成方式、配置方法、部署與最佳實(shí)踐、常見(jiàn)坑 一次說(shuō)清。

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

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

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

對(duì)比一下更直觀:

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

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

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

以 Vue/React/Vite/Webpack 為例:

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

dist/ 里通常有什么?

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

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

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

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

如果你寫的是一個(gè)組件庫(kù)/SDK,發(fā)布到 npm 時(shí),常見(jiàn)做法是:

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

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

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

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

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

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

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

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

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

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

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

所以 dist 的核心特點(diǎn)就是:“可運(yùn)行、可發(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:通過(guò)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:通過(guò)outputDir配置

vue.config.js

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

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

常見(jiàn)輸出類似:

dist/<project-name>/

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

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

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

  • 不提交 dist
  • 因?yàn)?dist 可由 CI/CD 或本地構(gòu)建生成
  • 提交 dist 會(huì)導(dǎo)致倉(cāng)庫(kù)膨脹、沖突頻繁

建議在 .gitignore 中加入:

dist/

必須提交 dist 的常見(jiàn)場(chǎng)景

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

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

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

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

比如:

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

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

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

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

/usr/share/nginx/html/

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

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

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

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

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

8. 常見(jiàn)坑與排查思路

坑 1:dist 空的 / 沒(méi)生成

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

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

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

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

  • base / publicPath 配錯(cuò)

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

    • Vite:base: "/admin/"

坑 4:dist 里 sourcemap 泄露源碼

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

9. 總結(jié)

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

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

相關(guān)文章

最新評(píng)論

平昌县| 玉树县| 宁国市| 湄潭县| 阿巴嘎旗| 大悟县| 隆回县| 越西县| 西乌| 中超| 彰武县| 壶关县| 米脂县| 积石山| 韩城市| 叙永县| 宜良县| 定陶县| 抚顺市| 秀山| 晴隆县| 贵州省| 丹阳市| 海兴县| 绵阳市| 海盐县| 藁城市| 炎陵县| 沽源县| 海南省| 洮南市| 盐边县| 汾西县| 乐陵市| 东乌珠穆沁旗| 阿克苏市| 古蔺县| 板桥市| 岱山县| 山阳县| 莱芜市|