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

前端webpack一些常用配置的作用詳解

 更新時(shí)間:2025年04月08日 11:41:49   作者:大嘴史努比  
在前端開發(fā)中Webpack已經(jīng)成為構(gòu)建現(xiàn)代JavaScript應(yīng)用的必備工具,它負(fù)責(zé)模塊的打包和優(yōu)化,這篇文章主要介紹了前端webpack一些常用配置的作用,文中介紹的非常詳細(xì),需要的朋友可以參考下

1. Loader

Loader 用于對(duì)模塊的源代碼進(jìn)行轉(zhuǎn)換。它可以將非 JavaScript 文件(如 CSS、圖片、字體等)轉(zhuǎn)換為 webpack 能夠處理的模塊。

常用 Loader 及其作用

Loader作用
babel-loader將 ES6+ 代碼轉(zhuǎn)換為 ES5,兼容舊版瀏覽器。
css-loader解析 CSS 文件,處理 @import 和 url() 等語法。
style-loader將 CSS 插入到 DOM 中,通過 <style> 標(biāo)簽生效。
sass-loader將 SCSS/SASS 文件編譯為 CSS。
file-loader處理文件(如圖片、字體),將其輸出到構(gòu)建目錄并返回文件路徑。
url-loader類似于 file-loader,但可以將小文件轉(zhuǎn)換為 Base64 URL,減少 HTTP 請(qǐng)求。
ts-loader將 TypeScript 編譯為 JavaScript。
module.exports = {
  module: {
    rules: [
      {
        test: /\.js$/, // 匹配 .js 文件
        exclude: /node_modules/, // 排除 node_modules 目錄
        use: 'babel-loader', // 使用 babel-loader
      },
      {
        test: /\.css$/, // 匹配 .css 文件
        use: ['style-loader', 'css-loader'], // 從右到左執(zhí)行
      },
      {
        test: /\.(png|jpe?g|gif|svg)$/, // 匹配圖片文件
        use: [
          {
            loader: 'url-loader',
            options: {
              limit: 8192, // 小于 8KB 的文件轉(zhuǎn)換為 Base64 URL
              name: 'images/[name].[hash:8].[ext]', // 輸出路徑和文件名
            },
          },
        ],
      },
    ],
  },
};

2. Plugin

Plugin 用于擴(kuò)展 webpack 的功能,可以在打包過程的各個(gè)階段執(zhí)行自定義操作。與 Loader 不同,Plugin 的功能范圍更廣,比如優(yōu)化資源、管理環(huán)境變量、注入全局變量等。

常用 Plugin 及其作用

Plugin作用
HtmlWebpackPlugin自動(dòng)生成 HTML 文件,并自動(dòng)注入打包后的資源(如 JS、CSS)。
MiniCssExtractPlugin將 CSS 提取為單獨(dú)的文件,而不是嵌入到 JS 中。
CleanWebpackPlugin在每次構(gòu)建前清理輸出目錄,避免舊文件殘留。
DefinePlugin定義全局常量,通常用于區(qū)分開發(fā)環(huán)境和生產(chǎn)環(huán)境。
CopyWebpackPlugin復(fù)制靜態(tài)文件(如圖片、字體)到輸出目錄。
HotModuleReplacementPlugin啟用模塊熱替換(HMR),在不刷新頁(yè)面的情況下更新模塊。
OptimizeCSSAssetsPlugin壓縮和優(yōu)化 CSS 文件。
TerserWebpackPlugin壓縮和優(yōu)化 JavaScript 文件。
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const webpack = require('webpack');

module.exports = {
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.html', // 指定 HTML 模板
      filename: 'index.html', // 輸出的 HTML 文件名
    }),
    new MiniCssExtractPlugin({
      filename: 'css/[name].[contenthash:8].css', // 提取 CSS 到單獨(dú)文件
    }),
    new CleanWebpackPlugin(), // 清理輸出目錄
    new webpack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify('production'), // 定義環(huán)境變量
    }),
  ],
};

3. 其他常用配置

1) entry

指定打包的入口文件。

module.exports = {
  entry: './src/index.js', // 單入口
  // 多入口
  entry: {
    app: './src/app.js',
    admin: './src/admin.js',
  },
};

2) output

指定打包后的文件輸出位置和文件名。

module.exports = {
  output: {
    path: path.resolve(__dirname, 'dist'), // 輸出目錄
    filename: 'js/[name].[contenthash:8].js', // 輸出文件名
    publicPath: '/', // 公共路徑(用于 CDN)
  },
};

3) mode

設(shè)置打包模式,可選 development、production 或 none。

module.exports = {
  mode: 'production', // 生產(chǎn)模式(默認(rèn)啟用代碼壓縮)
};

4) devServer

配置開發(fā)服務(wù)器,支持熱更新、代理等功能。

module.exports = {
  devServer: {
    contentBase: './dist', // 服務(wù)內(nèi)容目錄
    hot: true, // 啟用熱更新
    port: 8080, // 端口號(hào)
    proxy: {
      '/api': 'http://localhost:3000', // 代理 API 請(qǐng)求
    },
  },
};

5) optimization

配置代碼分割和壓縮優(yōu)化。

module.exports = {
  optimization: {
    splitChunks: {
      chunks: 'all', // 代碼分割
    },
    minimizer: [
      new TerserWebpackPlugin(), // 壓縮 JS
      new OptimizeCSSAssetsPlugin(), // 壓縮 CSS
    ],
  },
};

4. 總結(jié)

  • Loader:用于處理特定類型的文件(如 CSS、圖片、字體等),將其轉(zhuǎn)換為 webpack 能夠處理的模塊。

  • Plugin:用于擴(kuò)展 webpack 的功能,如生成 HTML 文件、提取 CSS、壓縮代碼等。

  • 常用配置entry、output、mode、devServer、optimization 等。

到此這篇關(guān)于前端webpack一些常用配置的作用的文章就介紹到這了,更多相關(guān)前端webpack常用配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 前端實(shí)現(xiàn)json動(dòng)畫詳細(xì)過程(附帶示例)

    前端實(shí)現(xiàn)json動(dòng)畫詳細(xì)過程(附帶示例)

    這篇文章主要介紹了如何使用Lottie制作動(dòng)畫,包括創(chuàng)建動(dòng)畫文件.json、實(shí)現(xiàn)效果、在Git倉(cāng)庫(kù)中保存和共享、運(yùn)行動(dòng)畫以及在動(dòng)畫天堂下載和顯示JSON動(dòng)畫,文中通過代碼及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • javascript實(shí)現(xiàn)支持移動(dòng)設(shè)備畫廊

    javascript實(shí)現(xiàn)支持移動(dòng)設(shè)備畫廊

    本文通過純javascript技術(shù)實(shí)現(xiàn)支持移動(dòng)設(shè)備畫廊,支持移動(dòng)設(shè)備手勢(shì)操作,感興趣的朋友一起來學(xué)習(xí)吧
    2015-08-08
  • JavaScript立即執(zhí)行函數(shù)與函數(shù)劫持的作用

    JavaScript立即執(zhí)行函數(shù)與函數(shù)劫持的作用

    IIFE全拼Imdiately Invoked Function Expression,是一個(gè)在定義的時(shí)候就立即執(zhí)行的JavaScript函數(shù),這篇文章主要給大家介紹了關(guān)于Javascript立即執(zhí)行函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • js實(shí)現(xiàn)簡(jiǎn)易的英漢詞典

    js實(shí)現(xiàn)簡(jiǎn)易的英漢詞典

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)簡(jiǎn)易的英漢詞典,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • js中的深淺拷貝問題簡(jiǎn)析

    js中的深淺拷貝問題簡(jiǎn)析

    這篇文章主要給大家介紹了關(guān)于js中的深淺拷貝問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • JS中空值合并運(yùn)算符 ?? 的使用

    JS中空值合并運(yùn)算符 ?? 的使用

    本文介紹了JavaScript中的空值合并運(yùn)算符??,解釋了它在null或undefined值時(shí)的使用,并對(duì)比了與邏輯運(yùn)算符||的不同之處,感興趣的可以了解一下
    2025-07-07
  • JavaScript實(shí)現(xiàn)的雙向跨域插件分享

    JavaScript實(shí)現(xiàn)的雙向跨域插件分享

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)的雙向跨域插件分享,本文實(shí)現(xiàn)把整個(gè)跨域過程抽象出來,封裝成一個(gè)JavaScript插件,需要的朋友可以參考下
    2015-01-01
  • failed?to?load?config?from?D\...\...vite.config.js錯(cuò)誤排查和解決辦法

    failed?to?load?config?from?D\...\...vite.config.js錯(cuò)誤排查和

    "failed to load config from vite.config.js"是一個(gè)錯(cuò)誤消息,它表明在加載vite.config.js配置文件時(shí)出現(xiàn)了問題,這篇文章主要介紹了failed?to?load?config?from?D\...\...vite.config.js錯(cuò)誤排查和解決辦法,需要的朋友可以參考下
    2026-01-01
  • java實(shí)現(xiàn)單鏈表增刪改查的實(shí)例代碼詳解

    java實(shí)現(xiàn)單鏈表增刪改查的實(shí)例代碼詳解

    在本篇文章里小編給大家整理了關(guān)于java實(shí)現(xiàn)單鏈表增刪改查的實(shí)例內(nèi)容,需要的朋友們可以參考下。
    2019-08-08
  • JS兩個(gè)數(shù)組比較,刪除重復(fù)值的巧妙方法(推薦)

    JS兩個(gè)數(shù)組比較,刪除重復(fù)值的巧妙方法(推薦)

    下面小編就為大家?guī)硪黄狫S兩個(gè)數(shù)組比較,刪除重復(fù)值的巧妙方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06

最新評(píng)論

沛县| 株洲县| 常宁市| 宁武县| 昌吉市| 梁山县| 柳州市| 阿拉善左旗| 大兴区| 湖北省| 堆龙德庆县| 岐山县| 商洛市| 平湖市| 伊春市| 牙克石市| 东平县| 永顺县| 平南县| 错那县| 巴青县| 琼海市| 万安县| 太和县| 京山县| 中西区| 巴林右旗| 女性| 咸阳市| 西平县| 化州市| 和平区| 石河子市| 土默特左旗| 松原市| 竹北市| 南和县| 曲水县| 龙岩市| 常州市| 工布江达县|