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

推薦する

JavaScriptは両端キューを実装する

この記事の例では、両端キューを実装するためのJavaScriptの具体的なコードを参考までに共有して...

初心者向けMySQLシリーズチュートリアル

目次1. 基本概念と基本コマンド1) 基本的な概念2) 基本コマンド2. SQL文の記述順序と実行順...

16 の XHTML1.0 と HTML の互換性ガイドラインの概要

1.ページを XML タイプとして宣言しないでください。ページでは UTF-8 または UTF-16...

Linux マルチスレッドにおけるフォークとミューテックス ロック プロセスの例

目次質問: 1. 最初の試み2. 合理的な分析3. 問題解決(1) pthread_join()の使...

Vue の長いリストをすばやく読み込む方法

目次背景メインコンテンツ1. コンポーネントの比較2. 実装のアイデア3. キーメソッドソースコード...

Linuxのlocateコマンドの使い方

01. コマンドの概要実際には、locate コマンドは find -name の別の書き方ですが、...

Mybatis ファジークエリ実装方法

Mybatis ファジークエリ実装方法mybatis のリバース アシスタントは非常に使いやすく、通...

Windows サーバー管理におけるセキュリティの考慮事項

ウェブサーバー1. Webサーバーは、wev、cgi、asp機能を無効にするなど、不要なIISコンポ...

divは、自動入力スタイルをブロックする入力ボックスとして入力を使用せずにコンテンツを入力できます。

今日、私は公開用の動的なウィンドウ スタイルを設計しましたが、マウスで入力をクリックしたときにブラウ...

MySQL 5.5 のインストールと設定のグラフィックチュートリアル

MySQL 5.5 のインストールと構成のチュートリアル ノートを整理し、全員と共有します。 1.公...

Docker コンテナ アプリケーションで避けるべき 10 の悪い習慣

コンテナが企業の IT インフラストラクチャに欠かせない要素となっていることは間違いありません。コン...

CSS3 はドラッグ可能なルービックキューブの 3D 効果を実現します

主に使用される知識ポイント: •css3 3D変換 •ネイティブjsマウスドラッグイベント•表示:グ...

分散監視システムにおけるZabbixのアクティブ、パッシブ、Web監視のプロセスの詳細な説明

前回の記事では、Zabbix のネットワーク検出機能について学習し、アクションと組み合わせてホストの...

JavaScript における Promise の詳細な説明

目次Promise の基本的な使用法: 1. Promiseオブジェクトを作成する2. プロミス方式...

MySQL 5.7 でパスワードを変更する簡単な方法

これは公式のスクリーンショットです。MySQL 5.7 をインストールすると、デフォルトのパスワード...