Beispiel für die Konvertierung von Webpack-Bildern in Base64

Beispiel für die Konvertierung von Webpack-Bildern in Base64

URL-Loader herunterladen

 yarn add -D URL-Lader
Modul: {
  Regeln:
       {
        Test: /\.(jpeg|jpg|png|svg|gif)$/,
        verwenden: {
          loader: 'url-loader', // Der Standard ist es6 module options: { // Konfigurieren Sie esModule: false, // Verwenden Sie die common.js-Spezifikation outputPath: 'images', // Name des Ausgabedateiverzeichnisses: 'images/[contenthash:4].[ext]',
            Limit: 20*1024 // In Base64 konvertieren, wenn weniger als 20 KB
          }
        }
      }
  ]
}

Sie können sehen, dass das kleine Bild in Base64 konvertiert wurde

Bildbeschreibung hier einfügen

Vollständiger Code

// webpack basiert auf node, also verwenden Sie module.exports
const path = require("Pfad");

let HtmlWebpackPlugin = require("html-webpack-plugin"); // HTML-Vorlage generieren const { CleanWebpackPlugin } = require("clean-webpack-plugin"); // dist vor jedem Verpacken löschen

const MiniCssExtractPlugin = require("mini-css-extract-plugin"); // CSS zusammenführen

// const OptimizeCssAssetsWebpackPlugin = require("optimize-css-assets-webpack-plugin") // CSS komprimieren

const CssMinimizerWebpackPlugin = require("css-minimizer-webpack-plugin"); // Neuestes komprimiertes CSS

const TerserWebpackPlugin = require("terser-webpack-plugin"); // Komprimiere js statt uglify. Da uglifyjs die es6-Syntax nicht unterstützt, verwende terser-webpack-plugin statt uglifyjs-webpack-plugin.

const webpack = require("webpack"); // Darin befindet sich ein ProvidePlugin, das globale Variablen bereitstellen kann const commonCssConfig = [ // Allgemeine CSS-Konfiguration MiniCssExtractPlugin.loader,
  "CSS-Lader",
  {
    Lader: "postcss-loader",
    Optionen:
      //CSS-Kompatibilitätskonfiguration postcssOptions: {
        Plugins: [[require("postcss-preset-env")()]],
      },
    },
  },
];
// Allgemeine Babel-Transcoder-Konfiguration const babelConfig = {
  Lader: 'babel-loader',
  Optionen:
    Voreinstellungen: [
      "@babel/Vorgabe-Umgebung"
    ],
    "Plugins": [
      ["@babel/plugin-proposal-decorators", { "legacy": true }],
      ["@babel/plugin-vorschlag-klasseneigenschaften"]
    ]
  }
}
// Allgemeine Plugin-Konfiguration const commonPlugin = [
  // html-Webpack-Plugin
  neues HtmlWebpackPlugin({
    Vorlage: "./src/index.html", // Geben Sie den Vorlagendateinamen an: "index.html", // Geben Sie den Ausgabedateinamen an }),
  // neues HtmlWebpackPlugin({ // Mehrere Vorlagen// Vorlage: './src/index.html', // Vorlage angeben// Dateiname: 'main.html', // Ausgabedateinamen angeben// }),
  // sauberes Webpack-Plugin
  neues CleanWebpackPlugin(), // Verwenden Sie dieses Plugin, um das Dist-Verzeichnis jedes Mal zu löschen, bevor das Dist-Verzeichnis generiert wird // mini-css-extract-plugin
  neues MiniCssExtractPlugin({
    // CSS extrahieren und in den öffentlichen Ordner mit dem Dateinamen „css/[name].[hash:4].css“ legen, // Öffentliche CSS-Dateien zusammenführen }),
  // CSS-Minimizer-Webpack-Plugin
  new CssMinimizerWebpackPlugin(), // Neue Version des komprimierten CSS

  // terser-webpack-plugin
  neues TerserWebpackPlugin({
    // js komprimieren
    test: /\.js(\?.*)?$/i, //An der Komprimierung beteiligte Dateien abgleichen parallel: true, //Mehrere Prozesse gleichzeitig ausführen lassen terserOptions: {
      //Ausgabe der Terser-Komprimierungskonfiguration: { comments: false },
      komprimieren: {
        // pure_funcs: ["console.log"], // console.log entfernen
      },
    },
    extractComments: true, // Kommentare in separate Dateien entfernen }),
  // Globale Variablen einfügen und global verwenden. Es ist nicht nötig, ein neues webpack.ProvidePlugin({ einzuführen.
    $:"jquery"
  })
]

modul.exporte = {
  // Alte Version komprimiertes CSS
  // Optimierung: {
  // Minimierer: [neues OptimizeCssAssetsWebpackPlugin]
  // },
  //Eintragskonfigurationseintrag: "./src/index.js",
  // Moduskonfigurationsmodus: „Produktion“, // Modus angeben, der Standard ist der Produktionsmodus, der Entwicklungsmodus ist praktisch zum Anzeigen von Code // Konfigurationsausgabe exportieren: {
    Pfad: path.resolve(__dirname, "dist"), // __dirname stellt das Stammverzeichnis M:\47-webpack-study\01-webpack\dist dar
    Dateiname: "js/[name].[hash:4].js", //Geben Sie den Namen der Ausgabedatei an // [name] ist ein dynamischer Name plus der Hashwert, um das Zwischenspeichern zu vermeiden. Der Standardwert ist ein 20-stelliger Hashwert /* 
     Die Rolle von Hash:
     Wenn Sie beispielsweise zum ersten Mal packen, wird die Datei vom Browser zwischengespeichert. Wenn Sie zum zweiten Mal packen und der Dateiname unverändert bleibt, lädt der Browser nicht den neuesten Code herunter, sodass der Hash ins Spiel kommt. Der Hash wird auch als Inhalts-Hashwert bezeichnet. Solange sich der Inhalt ändert, ändert sich der Hash und wird nicht zwischengespeichert, sodass er jederzeit auf dem neuesten Stand bleibt*/
  },
  // webpack-dev-server konfiguriert devServer: {
    Host: "localhost", // Host-Port: "9527", // Port geöffnet: true, // HistoryApiFallback automatisch öffnen: true, //Wenn die Seite nicht gefunden wird, standardmäßig zu index.html springen
    compress: true, //Gzip-Komprimierung für alle Dienste aktivieren hot: true, //Hot-Update starten Proxy: {
      // Proxy-Konfiguration "/api": {
        Ziel: "http:localhost:5000",
        changeOrigin: wahr,
      },
    },
  },
  // Loader-Konfigurationsmodul: {
    Regeln:
      {
        Test: /\.html$/,
        use: 'html-withimg-loader', //Plugin zur Verwendung von Bildern in HTML},
      {
        Test: /\.js$/,
        verwenden: babelConfig // Babel-Transcoder-Konfiguration},
      {
        Test: /\.css$/,
        use: [...commonCssConfig], // Die CSS-Reihenfolge ist von rechts nach links, von unten nach oben},
      {
        Test: /\.less$/,
        use: [...commonCssConfig,'less-loader'], // Die Reihenfolge von less ist von rechts nach links und von unten nach oben},
      {
        Test: /\.scss$/,
        use: [...commonCssConfig,"sass-loader"], // Die Reihenfolge von Sass ist von rechts nach links und von unten nach oben},
      // {
      // Test: /\.(jpeg|jpg|png|svg|gif)$/,
      // verwenden: {
      // loader: ‚file-loader‘, // es6-Modul wird standardmäßig verwendet // options: { // Konfiguration // esModule: false, // common.js-Spezifikation verwenden // outputPath: ‚images‘, // Ausgabedateiverzeichnis // Name: ‚images/[contenthash:4].[ext]‘,
      // }
      // }
      // }
      {
        Test: /\.(jpeg|jpg|png|svg|gif)$/,
        verwenden: {
          loader: 'url-loader', // Der Standard ist es6 module options: { // Konfigurieren Sie esModule: false, // Verwenden Sie die common.js-Spezifikation outputPath: 'images', // Name des Ausgabedateiverzeichnisses: 'images/[contenthash:4].[ext]',
            Limit: 20*1024 // In Base64 konvertieren, wenn weniger als 20 KB
          }
        }
      }
    ],
  },
  // Plugin-Konfiguration plugins: [...commonPlugin],
  // Externe Pakete von Drittanbietern ausschließen: {
    jQuery: "$",
  }
};

Legen Sie fest, dass das Bild in Webpack nicht in das Base64-Format konvertiert werden soll

Während des Entwicklungsprozesses ist es üblich, Bilder in Base64 zu konvertieren, z. B. beim Hochladen von Bildern. In einigen Fällen möchten Sie Bilder jedoch nicht in Base64 konvertieren, da die Bilder nach der Konvertierung in Base64 nicht leicht zu unterscheiden sind und Sie keine anderen Vorgänge basierend auf dem Bildnamen ausführen können. Wie können Sie also verhindern, dass Bilder in Webpack in Base64 konvertiert werden?

Eigentlich ist es ganz einfach. Sie müssen nur die Webpack-Konfigurationsdatei webpack.base.conf.js ändern und das Limit der Bildverarbeitungsoptionen in den Regeln unter dem Modul auf 1 ändern, wie in der folgenden Abbildung gezeigt.

Dies ist das Ende dieses Artikels über das Implementierungsbeispiel zum Konvertieren von Webpack-Bildern in Base64. Weitere verwandte Inhalte zum Konvertieren von Webpack-Bildern in Base64 finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die folgenden verwandten Artikel weiter. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung des durch Webpack-Bildimport verbesserten Dateiladers: URL-Loader
  • Implementierung und Probleme bei der Einführung von Bildern in Webpack
  • Eine kurze Diskussion über die Bildverarbeitung in Webpack4
  • Lösung für den Bildpfadfehler nach der Webpack-Konfigurationsverpackung
  • Eine kurze Diskussion über das Problem der Ermittlung der Größe hochgeladener Bilder mithilfe der Webpack-Pfadkomprimierung
  • Eine kurze Diskussion über die Probleme, die der Bildpfad beim Webpack-Verpacken verursacht
  • Lösung für den Fehler beim direkten Zugriff auf den Seitenbildpfad nach der Webpack-Verpackung

<<:  Tipps für die effiziente Nutzung von CSS-Stylesheets: Nutzen Sie die Leistungsfähigkeit von Stylesheets voll aus

>>:  Dateiupload über HTML5 auf Mobilgeräten

Artikel empfehlen

MySQL hilft Ihnen, Index-Pushdown in Sekunden zu verstehen

Inhaltsverzeichnis 1. Das Prinzip der Index-Push-...

...

Analyse der Initialisierung des Quellcodes des Linux-Kernel-Schedulers

Inhaltsverzeichnis 1. Einleitung 2. Grundkonzepte...

Vollständiges Beispiel einer Vue-Polling-Request-Lösung

Verständnis von Umfragen Tatsächlich liegt der Sc...

Lösung für VMware Workstation Pro, das unter Windows nicht läuft

Hat jemand von Ihnen nach dem Nationalfeiertag fe...

So verwenden Sie Vue zum Implementieren von CSS-Übergängen und Animationen

Inhaltsverzeichnis 1. Der Unterschied zwischen Üb...

JavaScript-Einzelthread und asynchrone Details

Inhaltsverzeichnis 1. Aufgabenwarteschlange 2. Um...

Detaillierte Erklärung der JS-Homologiestrategie und CSRF

Inhaltsverzeichnis Überblick Same-Origin-Policy (...

Implementierung der K8S-Bereitstellung eines Docker-Containers

Umgebung: (Docker, K8s-Cluster), fahren Sie mit d...

Führen Sie die Schritte zur Installation von FFmpeg auf dem CentOS-Server aus

Vorwort Die Serversystemumgebung ist: CentOS 6.5 ...

So betten Sie Dateien im Flash-Videoformat (FLV, SWF) in HTML-Dateien ein

Flash-Dateiformate: .FLV und .SWF Für das Flash-Vi...

So installieren Sie den Apache-Dienst im Linux-Betriebssystem

Downloadlink: Betriebsumgebung CentOS 7.6 in eine...