webpackでCSSを分割・圧縮し、リンクでインポートする手順

webpackでCSSを分割・圧縮し、リンクでインポートする手順

まずコードファイルの構造を見てみましょう。

エントリファイル (index1.js) の内容:

'jquery' から $ をインポートします
'./css/index.css' をインポートします
'./less/index.less' をインポートします
$(関数() {
    $('#app li:nth-child(odd)').css('color', 'red')
    $('#app li:nth-child(even)').css('color', 'green')
})
 
'./assets/fonts/iconfont.css' をインポートします。
定数ul = document.querySelector("ul");
定数 theI = document.createElement("li");
theI.className='アイコンフォント icon-qq';
ul.appendChild(theI);

webpack.config.js 構成ファイルの内容:

定数パス = require('path');
HtmlWebpackPlugin は 'html-webpack-plugin' を必要とします。
モジュール.エクスポート = {
    //エントリ ファイル アドレス エントリ: './src/index1.js',
    出力: {
        パス: path.resolve(__dirname, 'dist'),
        //エクスポートファイル名 filename: 'bundle.js',
    },
    プラグイン: [
        新しいHtmlWebpackプラグイン({
        テンプレート: './public/interlaced color.html'
    })],
     モジュール: {
         ルール: [{
             //.cssで終わるファイルに一致します。iは大文字と小文字を区別しません。テスト: [/\.css$/i],
            // 右から左に実行します。順序は変更できません。style-loader は CSS を DOM に挿入し、css-loader は @import と url() を処理します。これは js が import/require() を解析するのと同じです。use: ["style-loader", "css-loader"],
         }, {
             テスト: /\.less$/i,
                 使用: [
                     // LessをCSSにコンパイルする
                     'スタイルローダー'、
                     'css-loader',
                     「ローダーレス」、
                 ]、
             }, { // webpack5 はデフォルトではこれらのファイルを認識しないので、静的リソースとして出力します test: /\.(eot|svg|ttf|woff|woff2)$/,
                 タイプ: '資産/リソース'、
                 ジェネレータ: {
                     ファイル名: 'font/[name].[hash:6][ext]'
                 }
             }],
     },
};

パッケージ化してから、パッケージ化された HTML ファイルを実行します。

CSSスタイルは、jsによって生成されたスタイルタグの形式で追加されていることがわかります。

パッケージを実行すると、lessがcssファイルに変換されますが、cssファイルはjsを通じてスタイルタグで追加されます。次に、cssを分割し、リンクタグで導入します。

ステップ:

1. mini-css-extract-pluginをインストールする

npm i mini-css-extract-plugin -D //npm インストール yarn add mini-css-extract-plugin -D //yarn インストール

2. webpack.config.jsファイルで導入して設定する

定数パス = require('path');
HtmlWebpackPlugin は 'html-webpack-plugin' を必要とします。
//インストールされた mini-css-extract-plugin を導入する
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
モジュール.エクスポート = {
    //エントリ ファイル アドレス エントリ: './src/index1.js',
    出力: {
        パス: path.resolve(__dirname, 'dist'),
        //エクスポートファイル名 filename: 'bundle.js',
    },
    プラグイン: [新しい MiniCssExtractPlugin(),
        新しいHtmlWebpackプラグイン({
        テンプレート: './public/interlaced color.html'
    })],
     モジュール: {
         ルール: [{
             //.cssで終わるファイルに一致します。iは大文字と小文字を区別しません。テスト: [/\.css$/i],
            // 右から左に実行します。順序は変更できません。Style-loader は CSS を DOM に挿入し、css-loader は @import と url() を処理します。これは js が import/require() を解析するのと同じです。use: [MiniCssExtractPlugin.loader, "css-loader"
             ]、
         }, {
             テスト: /\.less$/i,
                 使用: [
                     // LessをCSSにコンパイルする
                     MiniCssExtractPlugin.loader、
                     'css-loader',
                     「ローダーレス」、
                 ]、
             }, { // webpack5 はデフォルトではこれらのファイルを認識しないので、静的リソースとして出力します test: /\.(eot|svg|ttf|woff|woff2)$/,
                 タイプ: '資産/リソース'、
                 ジェネレータ: {
                     ファイル名: 'font/[name].[hash:6][ext]'
                 }
             }],
     },
};

知らせ:

  • HtmlWebpackPlugin は、リンクの形式でパッケージ化された HTML ページに CSS ファイルを導入します。
  • 使用設定項目は右から左へです。
  • css と less を使用する場合、つまり use 構成項目では、MiniCssExtractPlugin.loader を css-loader の後、style-loader の前に配置してはなりません。これは、js が import/require() を解析するのと同じように、css-loader と less-loader が @import と url() を処理するためです (その後に配置すると、解析前に分割することと同じになり、エラーが発生します)。スタイル ローダーは CSS を DOM に挿入します (その前に配置すると、CSS を DOM に挿入してから分割するのと同じになり、エラーが発生します)。

3. 分割されたCSSファイルを圧縮する

  • optimize-css-assets-webpack-plugin をダウンロード
  • webpack.config.js ファイルをインポートして構成する
定数パス = require('path');
HtmlWebpackPlugin は 'html-webpack-plugin' を必要とします。
//インストールされた mini-css-extract-plugin を導入する
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
//分割を圧縮するために使用されるCSS
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
モジュール.エクスポート = {
    //エントリ ファイル アドレス エントリ: './src/index1.js',
    出力: {
        パス: path.resolve(__dirname, 'dist'),
        //エクスポートファイル名 filename: 'bundle.js',
    },
    プラグイン: [新しい MiniCssExtractPlugin()、新しい OptimizeCSSAssetsPlugin({})、
        新しいHtmlWebpackプラグイン({
        テンプレート: './public/interlaced color.html'
    })],
     モジュール: {
         ルール: [{
             //.cssで終わるファイルに一致します。iは大文字と小文字を区別しません。テスト: [/\.css$/i],
            // 右から左に実行します。順序は変更できません。Style-loader は CSS を DOM に挿入し、css-loader は @import と url() を処理します。これは js が import/require() を解析するのと同じです。use: [MiniCssExtractPlugin.loader, "css-loader"
             ]、
         }, {
             テスト: /\.less$/i,
                 使用: [
                     // LessをCSSにコンパイルする 
                     MiniCssExtractPlugin.loader、
                     'css-loader',
                     「ローダーレス」、
                 ]、
             }, { // webpack5 はデフォルトではこれらのファイルを認識しないので、静的リソースとして出力します test: /\.(eot|svg|ttf|woff|woff2)$/,
                 タイプ: '資産/リソース'、
                 ジェネレータ: {
                     ファイル名: 'font/[name].[hash:6][ext]'
                 }
             }],
     }
};

4. 包装

追加の main.css ファイルを見つけたので、Web ページを開いて表示しました。

main.css ファイルはリンクとしてインポートされ、圧縮されます。

これで、webpack による CSS の分割と圧縮、およびリンクによるインポートに関するこの記事は終了です。より関連性の高い webpack による CSS の分割と圧縮に関するコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • webpack4 css パッケージ圧縮問題の解決策
  • webpack を使用して js と css をパッケージ化して圧縮する方法の例

<<:  Dockerで複数のSpringbootを実行するための詳細なチュートリアル

>>:  HTML テーブル マークアップ チュートリアル (15): テーブル タイトル

推薦する

HTML フォーム タグの使用方法を学ぶチュートリアル

HTML のフォームを使用して、ユーザーからさまざまな種類の入力情報を収集できます。フォームは、実際...

ミニプログラム開発ツールのソースコードからの基本実装の分析

目次ミニプログラム開発者ツールのソースコードを表示する方法ミニプログラムアーキテクチャ設計1. ミニ...

JS でシンプルな画像カルーセル効果を実現

この記事では、シンプルな画像カルーセル効果を実現するためのJSの具体的なコードを参考までに紹介します...

Spring Cloud での Docker デプロイメントに jib を使用する詳細な手順

ジブの紹介Jib は Google が開発した、Java アプリケーションの Docker および ...

Ubuntu 18.04 のインストールで「ldlinux.c32 のロードに失敗しました」というエラーが表示され、解決手順がわかりません

序文私は Win7 を搭載した古いラップトップを持っています。古いシステムを維持しながら、同時に U...

Linux での Redis の永続性、マスター スレーブ同期、Sentinel の詳細な説明

1.0 Redis の永続性Redis はメモリ内データベースです。サーバー プロセスが終了すると、...

MySql 8.0.16-win64 インストール チュートリアル

1. ダウンロードしたファイルを以下のように解凍します。 。 2. 環境変数に解凍ディレクトリを追加...

Centos7.3 で mysql5.7.18 をインストールして初期パスワードを変更する方法

この記事では、Centos7.3でのmysql5.7.18のインストールと初期パスワードの変更につい...

HTML で色を表すには、6 桁の 16 進コード、RGB、またはキーワードを使用します。

HTML で色を表す方法は 3 つありますが、最もよく使われるのは 6 桁の 16 進コード表現です...

MYSQL 文字列強制変換メソッドの例

序文2 つのテーブル内の同じフィールドの型が異なっていたり、エンコード タイプが異なっていたりするた...

Mac OS に MySQL 5.7.20 をインストールするための詳細なグラフィックとテキストの説明

Mac OS X で TAR.GZ から MySQL 5.7 をインストールする MySQL 5.6...

Vue の動的メニュー、動的ルートの読み込みと更新の落とし穴

目次必要:アイデア:レッスン:テキストを共有する:要約する必要:インターフェイスからサブメニュー デ...

HTML 画像 img にハイパーリンクを追加した後の醜い青い境界線の問題を解決する

HTML画像にハイパーリンクを追加すると醜い青い枠線が表示される次のように:解決: CSS スタイル...

MySQLデータベースのマスタースレーブレプリケーションの原理と機能の分析

目次1. データベースのマスター/スレーブ分類: 2. MySQL マスタースレーブの紹介3. マス...

Nginx ルーティング転送とリバースプロキシロケーション構成の実装

Nginx を設定する 3 つの方法最初の方法は、位置一致部分を直接置き換える。 2 番目の pro...