Webpack パッケージング CSS 背景画像パスの問題に対する完璧なソリューション

Webpack パッケージング CSS 背景画像パスの問題に対する完璧なソリューション

vue コンポーネントのスタイル タグ内には、背景画像を使用する次の CSS コードがあります。

背景画像: url("../assets/img/icon_add.png");

webpackのcss-loaderの解析構成は次のとおりです。

{
        テスト: /\.(css|less)$/,
        除外: path.resolve(__dirname, 'node_modules'),
        使用法: ['style-loader', 'css-loader', 'less-loader']
    }

パッケージ化後、dist ディレクトリに css ファイルが見つかりません。これは、css ファイルが js ファイルに変換されるためです。

この時点でプロジェクトを起動すると、背景画像が正しくインポートされ、正常に表示できるようになります。

2 CSSファイルを別のファイルディレクトリに抽出する

mini-css-extract-plugin を使用して、CSS ファイルを dist ディレクトリの下の css ディレクトリに個別に抽出します。

2.1 ローダーの設定

{
        テスト: /\.(css|less)$/,
        除外: path.resolve(__dirname, 'node_modules'),
        使用: [MiniCssExtractPlugin.loader, 'css-loader', 'less-loader']
    }

2.2 プラグインの設定

新しい MiniCssExtractPlugin({
            ファイル名: 'css/[name][contenthash].css',
        })

パッケージ化後、distディレクトリ構造は次のようになります。

画像はルート ディレクトリ (dist) にありますが、CSS ファイルは dist/css/ ディレクトリにあることがわかります。次に、パッケージ化された CSS ファイルが画像パスを参照する方法を見てみましょう。

2.3 パッケージングの結果

背景画像: url(bb65a86a2fe7669e483a56b970bea421.png);

dist/css ディレクトリに bb65a86a2fe7669e483a56b970bea421.png 画像がないことがわかります。そのため、画像が正しく表示されません。理想的な状況は

背景画像: url(../bb65a86a2fe7669e483a56b970bea421.png);

3つの解決策

ローダーの設定を次のように変更します

{
        ローダー: MiniCssExtractPlugin.loader、
        オプション:
            // パッケージ化されたルート パスに対する現在の CSS ファイルの相対パス dist publicPath: '../'
        }
    }, 'css-loader', 'less-loader'

要約する

CSS ファイルを分離すると、CSS 背景画像パス エラーが発生します。解決策の核となるのは、publicPath の値を構成することです。publicPath の値は、ルート ディレクトリを基準とした、CSS ファイルが配置されているファイル ディレクトリの相対パス値です。 たとえば、ルート パスは / で、css ファイルが配置されているディレクトリは /css/ なので、相対パスは次のようになります。

予期せぬ問題

webpack のパッケージ化後に css ファイルが bundle.js ファイルに混合されるのに、画像が bundle.js に混合されないのはなぜですか? ? ?

これで、webpack パッケージング CSS 背景画像パスの問題に対する完璧な解決策に関するこの記事は終わりです。より関連性の高い webpack パッケージング CSS 背景画像パスのコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

<<:  Dockerイメージを構築する2つの方法

>>:  HTML リスト タグ dl、ul、ol の使用例

推薦する

ショートビデオ(Douyin)の透かし除去ツールの実装コード

目次1. まず最初のリンクを取得する2. ブラウザでこのリンクを開いてください3. アドレスを開くと...

Linux での UDP について学ぶ

目次1. UDPとLinuxの基礎の紹介2. 各機能の使い方1. ソケット機能の使用2. バインド機...

HTMLタグのフルネームと機能の紹介

アルファベット順DTD: このタグが許可される XHTML 1.0 DTD を示します。 S=厳密、...

フロントエンドは画像を遅延ロードする方法を知っている必要があります(3つの方法)

目次1. 遅延読み込みとは何ですか? 2. 遅延読み込みを実装する🌄: 2.1 最初の方法: 2.2...

1つのコマンドで、シェルの読み取りコマンドの共通パラメータを理解できます。

Shell で受信パラメータを受信する方法は 2 つあることがわかっています。 1 つはスクリプト...

VUEはG2チャートを使用した実装を導入します

目次G2チャートについて使用テンプレートで使用される完全なコード (棒グラフ)世界地図を追加するG2...

ノードでシェルスクリプトを使用する方法

背景開発中、特定の状況でビジネス ロジックをバッチ処理するためのスクリプトが必要になる場合があります...

HTML のセルパディングとセルスペース属性を図で説明します

セル - 表の内容 セルの余白 (表の余白) (cellpadding) - セルの外側の距離を表し...

dockerでマウントされたディレクトリが読み書きできない問題を解決する

次のコマンドを使用してコンテナを作成し、ローカルの /home/dock/Downloads ディレ...

CSS マージンの折りたたみの詳細な説明

前のこれは古くからある古典的な質問です。以前読者から質問があったので、ここでお答えします。簡単な例か...

ウェブページを作るときに知っておくべきいくつかのスキル

1. IE6 では z-index が無効です。 CSS では、階層を変更するために z-index...

MySQL 5.7 および 8.0 データベースのルート パスワードを忘れた場合の解決策

注: MySQL5.7 で root パスワードをクラックするには、パスワード認証をスキップしてデー...

MySQL Order By 複数フィールドのソートルールのコード例

事前に言っておく気まぐれですが、MySQL の order by sorting にどのようなルール...

mysql-8.0.11-winx64.zip の詳細なインストール チュートリアル

zip インストール パッケージをダウンロードします。 MySQL8.0 For Windows z...

Ubuntu 16.04 64ビット版を3つのステップで32ビットプログラムと互換性を持たせる

ステップ1: システムのアーキテクチャを確認する dpkg --print-architecture...