webpack イメージを base64 に変換する例

webpack イメージを base64 に変換する例

url-loader をダウンロード

 糸を追加 -D URLローダー
モジュール: {
  ルール:
       {
        テスト: /\.(jpeg|jpg|png|svg|gif)$/,
        使用: {
          loader: 'url-loader', // デフォルトは es6 モジュールです options: { // 設定 esModule: false, // common.js 仕様を使用します outputPath: 'images', // 出力ファイル ディレクトリ名: 'images/[contenthash:4].[ext]',
            limit: 20*1024 // 20k未満の場合はbase64に変換します
          }
        }
      }
  ]
}

小さな画像がbase64に変換されていることがわかります

ここに画像の説明を挿入

完全なコード

// webpackはnodeをベースにしているので、module.exportsを使用します
定数パス = require("パス");

let HtmlWebpackPlugin = require("html-webpack-plugin"); // HTML テンプレートを生成する const { CleanWebpackPlugin } = require("clean-webpack-plugin"); // 各パッケージ化の前に dist をクリアする

const MiniCssExtractPlugin = require("mini-css-extract-plugin"); // CSSをマージ

// const OptimizeCssAssetsWebpackPlugin = require("optimize-css-assets-webpack-plugin") // CSS を圧縮する

const CssMinimizerWebpackPlugin = require("css-minimizer-webpack-plugin"); // 最新の圧縮された CSS

const TerserWebpackPlugin = require("terser-webpack-plugin"); // uglify の代わりに js を圧縮します。uglifyjs は es6 構文をサポートしていないため、uglifyjs-webpack-plugin の代わりに terser-webpack-plugin を使用します。

const webpack = require("webpack"); // 内部にグローバル変数を提供できる ProvidePlugin があります const commonCssConfig = [ // 共通 CSS 構成 MiniCssExtractPlugin.loader,
  「cssローダー」、
  {
    ローダー: "postcss-loader",
    オプション:
      //css互換性設定 postcssOptions: {
        プラグイン: [[require("postcss-preset-env")()]],
      },
    },
  },
];
// 共通 babel トランスコーダ設定 const babelConfig = {
  ローダー: 'babel-loader',
  オプション:
    プリセット: [
      "@babel/プリセット環境"
    ]、
    「プラグイン」: [
      ["@babel/plugin-proposal-decorators", { "legacy": true }],
      ["@babel/プラグイン提案クラスのプロパティ"]
    ]
  }
}
// 共通プラグイン設定 const commonPlugin = [
  // html-webpack-プラグイン
  新しいHtmlWebpackプラグイン({
    template: "./src/index.html", // テンプレートを指定します filename: "index.html", // 出力ファイル名を指定します }),
  // new HtmlWebpackPlugin({ // 複数のテンプレート // template: './src/index.html', // テンプレートを指定 // filename: 'main.html', // 出力ファイル名を指定 // }),
  // クリーンなWebpackプラグイン
  new CleanWebpackPlugin(), // このプラグインを使用して、毎回 dist ディレクトリを生成する前に dist ディレクトリを削除します // mini-css-extract-plugin
  新しい MiniCssExtractPlugin({
    // CSS を抽出してパブリック フォルダーに配置します。ファイル名: "css/[name].[hash:4].css", // CSS パブリック ファイルをマージします }),
  // css-minimizer-webpack-プラグイン
  new CssMinimizerWebpackPlugin(), // 圧縮された CSS の新しいバージョン

  // terser-webpack-プラグイン
  新しいTerserWebpackPlugin({
    // js を圧縮する
    test: /\.js(\?.*)?$/i, //圧縮に関係するファイルを一致させる parallel: true, //複数のプロセスを同時に実行する terserOptions: {
      //簡潔な圧縮構成出力: { コメント: false },
      圧縮: {
        // pure_funcs: ["console.log"], // console.log を削除
      },
    },
    extractComments: true, // コメントを別のファイルに分割する }),
  // グローバル変数を挿入し、グローバルに使用します。新しい webpack.ProvidePlugin({ を導入する必要はありません。
    $:"jQuery"
  })
]

モジュール.エクスポート = {
  // 古いバージョンの圧縮された CSS
  // 最適化: {
  // 最小化ツール: [新しい OptimizeCssAssetsWebpackPlugin]
  // },
  //エントリ構成エントリ: "./src/index.js",
  // モード設定 mode: "production", // モードを指定します。デフォルトはproductionモードです。開発モードはコードの表示に便利です // 設定出力をエクスポートします: {
    path: path.resolve(__dirname, "dist"), // __dirname はルートディレクトリを表します M:\47-webpack-study\01-webpack\dist
    filename: "js/[name].[hash:4].js", //出力ファイル名を指定します // [name]は動的な名前で、キャッシュを避けるためのハッシュ値が追加されます。デフォルトは20桁のハッシュ値です /* 
     ハッシュの役割:
     たとえば、初めてパッケージ化する場合、ファイルはブラウザによってキャッシュされます。2 回目にパッケージ化する場合、ファイル名が変更されていないと、ブラウザは最新のコードをダウンロードしないため、ハッシュが役立ちます。ハッシュはコンテンツ ハッシュ値とも呼ばれます。コンテンツが変更される限り、ハッシュは変更され、キャッシュされず、常に最新の状態に保たれます*/
  },
  // webpack-dev-server は devServer を設定します: {
    host: "localhost", // ホスト port: "9527", // ポート open: true, // 自動的に開く historyApiFallback: true, // ページが見つからない場合は、デフォルトで index.html にジャンプします
    compressed: true, //すべてのサービスに対してgzip圧縮を有効にする hot: true, //ホットアップデートを開始する proxy: {
      // プロキシ設定 "/api": {
        ターゲット: "http:localhost:5000",
        変更元: true、
      },
    },
  },
  // ローダー構成モジュール: {
    ルール:
      {
        テスト: /\.html$/,
        use: 'html-withimg-loader', //HTML で画像を使用するためのプラグイン},
      {
        テスト: /\.js$/,
        使用: babelConfig // babelトランスコーダ設定},
      {
        テスト: /\.css$/,
        使用法: [...commonCssConfig], // CSS の順序は右から左、下から上です},
      {
        テスト: /\.less$/,
        使用方法: [...commonCssConfig,'less-loader'], // less の順序は右から左、下から上です},
      {
        テスト: /\.scss$/,
        使用方法: [...commonCssConfig,"sass-loader"], // sass の順序は右から左、下から上です},
      // {
      // テスト: /\.(jpeg|jpg|png|svg|gif)$/,
      // 使用: {
      // loader: 'file-loader', // デフォルトでは es6 モジュールが使用されます // options: { // 構成 // esModule: false, // common.js 仕様を使用します // outputPath: 'images', // 出力ファイル ディレクトリ // name: 'images/[contenthash:4].[ext]',
      // }
      // }
      // }
      {
        テスト: /\.(jpeg|jpg|png|svg|gif)$/,
        使用: {
          loader: 'url-loader', // デフォルトは es6 モジュールです options: { // 設定 esModule: false, // common.js 仕様を使用します outputPath: 'images', // 出力ファイル ディレクトリ名: 'images/[contenthash:4].[ext]',
            limit: 20*1024 // 20k未満の場合はbase64に変換します
          }
        }
      }
    ]、
  },
  // プラグイン設定 plugins: [...commonPlugin],
  // サードパーティのパッケージを除外する externals: {
    jQuery: '$',
  }
};

Webpackで画像をbase64形式に変換しないように設定する

開発プロセスでは、画像のアップロードなど、画像を base64 に変換することが一般的です。ただし、base64 に変換した後は画像が区別しにくくなり、画像名に基づいて他の操作を実行できなくなるため、画像を base64 に変換したくない場合があります。では、Webpack で画像が base64 に変換されるのを禁止するにはどうすればよいでしょうか。

実は、とても簡単です。Webpack の設定ファイル webpack.base.conf.js を修正し、下の図に示すように、モジュールの下のルール内の画像処理オプションの制限を 1 に変更するだけです。

webpackイメージをbase64に変換する実装例についてはこれで終了です。webpackイメージをbase64に変換する関連コンテンツについては、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • webpack イメージインポート強化ファイルローダーの詳細な説明: url-loader
  • webpackで画像を導入する際の実装と問題点
  • webpack4 画像処理の概要についての簡単な説明
  • webpack 構成パッケージ化後のイメージ パス エラーの解決方法
  • Webpackパス圧縮を使用してアップロードされた画像のサイズを取得する問題について簡単に説明します。
  • webpackパッケージング中に画像パスによって発生する問題について簡単に説明します。
  • webpack パッケージ化後にページ画像パスに直接アクセスするエラーの解決方法

<<:  CSSスタイルシートを効率的に使用するためのヒント: スタイルシートの力を最大限に活用する

>>:  モバイルでのHTML5経由のファイルアップロード

推薦する

CSS3で作成した画像スクロール効果

成果を達成する実装コードhtml <base href="https://s3-us...

Ubuntu にグラフィック ドライバーが正常にインストールされたかどうかを確認する方法

次のコマンドを実行します: glxinfo | grep レンダリング結果が「はい」の場合、グラフィ...

Docker を使用して Django プロジェクトをデプロイする方法の例

また、Dockerを使用してDjangoプロジェクトをデプロイするのも非常に簡単です。とても良いです...

ウェブページが自動的にデュアルコアブラウザの高速モードを呼び出すようにします(Webkit)

コードサンプルヘッドタグにコード行を追加します: XML/HTML コードコンテンツをクリップボード...

Vue のスロットリング関数使用時の落とし穴ガイド

序文一般的なビジネス シナリオでは、検索ボックスへの入力が完了した後、検索データを取得するために関連...

HTML の div と span の違い (共通点と相違点)

共通点: DIV タグと SPAN タグは、コンテンツ全体を非表示にしたり、コンテンツ全体を移動した...

EF (Entity Framework) の挿入または更新データ エラーの解決方法

エラー メッセージ:ストアの更新、挿入、または削除ステートメントが予期しない行数 (0) に影響を与...

Docker データ ストレージ tmpfs マウントの詳細な説明

この記事を読む前に、ボリュームとバインドマウントの基本を理解しておいてください。詳細については、次の...

Reactの二次連携を実現する方法

この記事では、二次リンクを実現するためのReactの具体的なコードを参考までに共有します。具体的な内...

Vueはスクロールバースタイルを実装します

最初はブラウザのスクロールバーのスタイルを変更して効果を実現したいと思っていましたが、情報を調べてみ...

Web 上の要素を非表示にする方法とその利点と欠点

ソースコードの例: https://codepen.io/shadeed/pen/03caf6b36...

jQueryは画像の強調表示を実現します

ページ上の画像を強調表示することは非常に一般的です。ここでは、jQuery を使用して画像を強調表示...

WeChatミニプログラムマップの使い方を詳しく解説

この記事の例では、WeChatアプレットマップで使用される具体的な実装コードを参考までに共有していま...

Django+vue 登録とログインのサンプルコード

登録するフロントエンドは、vue の axios を使用して値を渡し、取得したアカウントとパスワード...

Linux での i3 ウィンドウ マネージャーの設定と使用に関するチュートリアル

この記事では、Fedora 28 に i3 をインストールして簡単に設定する方法を説明します。 1....