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 の使用例

推薦する

setup+ref+reactive は vue3 の応答性を実装します

セットアップは、結合された API を記述するために使用されます。テンプレートが使用できるようにする...

MySQLデータベースイベントスケジュール実行タスクの詳細な説明

1. 背景プロジェクトの業務が進むにつれて、データベース テーブルの数がどんどん大きくなり、ハードデ...

CentOS に PHP5 をインストール、PHP をアンインストール、PHP7 をインストールするチュートリアル

まず、PHP5をインストールするのはとても簡単ですyum install php PHP5 を使用し...

js でクラスセレクターと名前属性セレクターを実装する手順の例

jQuery の登場により、DOM の操作効率が大幅に向上し、開発がより高いレベルに引き上げられまし...

Docker イメージのローカル Elasticsearch ポート操作へのアクセス

dockerスタックによってデプロイされたイメージサービスを使用すると、イメージを入力した後、理論的...

CSS 水平方向の中央揃えと最大幅の制限

CSS レイアウトとスタイルに関する質問: 水平方向の中央揃えと最大幅の制限のバランスをとる方法最近...

HTML 基本構造_Powernode Java アカデミー

多くの場合、Web ページ開発を学ぶときに最初に印象に残るのは、html または htm サフィック...

Windows Server 2008R2 ファイル サーバーを Windows Server 2016 にアップグレードする

ユーザー組織には、ドメインに参加している 2 台の Windows Server 2008 R2 フ...

Nginx 静的ファイル サービスの構成と最適化の詳細な説明

ルートディレクトリとインデックスファイルroot ディレクティブは、ファイルの検索に使用するルート ...

MySQL の 3 つの浮動小数点型 (float、double、decimal) の違いと概要について簡単に説明します。

各浮動小数点型のストレージ サイズと範囲は、次の表に示されています。タイプサイズ範囲(符号付き)範囲...

vue3+ts+EsLint+Prettier 標準コード実装

目次使用EsLintの使用プロフィールを追加するPrettierの使用huskyとlint-stag...

HTMLタグIDは変数にできる

<table id=" <%=var1%>">、var1...

MySQL プロセス制御 IF()、IFNULL()、NULLIF()、ISNULL() 関数

MySQL では、IF()、IFNULL()、NULLIF()、および ISNULL() 関数を使用...

HTML ページでギリシャ文字を使用する方法

ギリシャ文字は、特に数学や物理学などの科学技術分野で非常によく使用される記号列であり、特定の意味を持...

MySQLの詳細な説明Explain

日常業務では、実行に時間のかかる SQL ステートメントを記録するために、スロー クエリを実行するこ...