Webpackの初心者向けガイド

Feb 10, 2025 am 09:59 AM

A Beginner’s Guide to Webpack

この記事では、Webパックを調査します。これは、Web開発ワークフローを簡素化および最適化する強力な静的モジュールパッカーです。 Webpackドキュメントは詳細ですが、初心者は依然として急な学習曲線の問題に直面する可能性があります。このチュートリアルは、Webpackのコアコンセプトを習得し、実際の操作を段階的に導くのに役立つように設計されています。

コアポイント:

  • Webpackの基本:Webpackは、すべてのファイルとリソースをモジュールとして扱い、依存関係グラフを構築し、Web展開用の1つ以上のバンドルを生成します。
  • コアコンセプトの概要:さまざまな環境でのエントリ、出力、ローダー、プラグイン、モード設定(開発、生産)を理解してください。Webpackを効果的に使用します。
  • Webpack 5拡張機能:Edition 5は、パフォーマンスを改善し、バンドルサイズを削減するために、永続的なキャッシュ、改善、自動node.jsポリフィルなどの機能を紹介します。
  • Webpackの初心者:基本的な構成ファイルを設定し、デフォルト設定を理解し、などのプラグインを使用して動的なHTML生成を実行して、WebPackプロジェクトを開始します。 html-webpack-plugin
  • Advanced Usage:and style-loadercss-loader生産環境のベストプラクティス:
  • Webpackの機能を利用して、最新のJavaScriptを変換し、スタイルとリソースを管理し、
  • や生産バージョンビルディングの最適化などのツールを使用して開発をスピードアップします。 webpack-dev-server
  • webpackとは何ですか?

Webpackのコアは静的モジュールパッカーです。特定のプロジェクトでは、Webpackはすべてのファイルとリソースをモジュールとして扱い、依存関係グラフに依存しています。この依存関係図は、ファイル間の参照(および

ステートメント)を介してモジュールがどのように相互に関連付けられているかについて説明します。 Webpackはすべてのモジュールを介して静的に反復し、グラフを構築し、それを使用して単一のバンドル(または複数のバンドル)を生成します - すべてのモジュールからのコードを含むJavaScriptファイルと正しい順序で結合します。 「静的」とは、Webpackが依存関係グラフを構築する場合、ソースコードを実行するのではなく、モジュールとその依存関係をバンドルに組み合わせることを意味します。その後、HTMLファイルに含めることができます。

requireimportwebpackメインコンセプト:

深く練習する前に、Webpackの主な概念のいくつかを明確に理解する必要があります。

  • エントリ:エントリポイントは、Webpackが使用して内部依存関係グラフの構築を開始するモジュールです。そこから、エントリポイントが依存している他のモジュールとライブラリ(直接および間接的に)を決定し、残りの依存関係がなくなるまでグラフにそれらを含めます。デフォルトでは、entryプロパティは./src/index.jsに設定されていますが、WebPack構成ファイルで異なるモジュール(または複数のモジュール)を指定できます。
  • 出力:output属性は、ファイルに使用するバンドルと名前をWebpackに発行する場所を示します。このプロパティのデフォルト値は、メインバンドルの./dist/main.js>および他の生成されたファイル(画像など)の./distです。もちろん、必要に応じて構成内の異なる値を指定できます。
  • ローダー:デフォルトでは、WebPackはJavaScriptとJSONファイルのみを理解しています。他のタイプのファイルを処理して有効なモジュールに変換するために、Webpackはローダーを使用します。ローダーは、非javaScriptモジュールのソースコードを変換し、依存関係グラフに追加する前にこれらのファイルを事前に処理できるようにします。たとえば、ローダーはファイルをCoffeescript言語からJavaScriptに変換したり、インライン画像をデータURLに変換したりできます。ローダーを使用して、JavaScriptモジュールから直接CSSファイルをインポートすることもできます。
  • プラグイン:プラグインは、ローダーが実行できない他のタスクに使用されます。彼らは、リソース管理、バンドルの最小化と最適化などのための幅広いソリューションを提供します。
  • モード:通常、アプリケーションを開発するときは、2種類のソースコードを使用します。開発バージョンの構築と生産バージョンの構築用です。 webpackを使用すると、modeパラメーターをdevelopmentproduction、またはnoneに変更することにより、生成されるバージョンを設定できます。これにより、Webpackは各環境に対応する組み込みの最適化を使用できます。デフォルトの値はproductionです。 noneモードとは、デフォルトの最適化オプションが使用されないことを意味します。

Webpackはどのように機能しますか:

単純なプロジェクトでも、HTML、CSS、およびJavaScriptファイルが含まれています。さらに、フォント、画像などのリソースも含まれている場合があります。したがって、典型的なWebpackワークフローには、適切なCSSおよびJSリンクと必要なリソースを備えたindex.htmlファイルのセットアップが含まれます。さらに、相互依存のCSSおよびJSモジュールが多数ある場合は、それらを最適化して適切に組み合わせて、生産の準備ができているユニットになります。

このすべてを行うには、Webpackは構成に依存しています。バージョン4以降から始めて、WebPackはボックスから合理的なデフォルト値を提供するため、構成ファイルは必要ありません。ただし、不可解なプロジェクトでは、ファイルとリソースを変換する方法と生成する種類の出力を変換する方法を説明する特別な

ファイルを提供する必要があります。このファイルはすぐに巨大になる可能性があるため、その仕組みの背後にある主な概念を理解しない限り、Webパックの仕組みを理解することが困難になります。 webpack.config.js 提供された構成に基づいて、Webpackはエントリポイントから始まり、依存関係グラフを構築するときに遭遇するすべてのモジュールを解析します。モジュールに依存関係が含まれている場合、このプロセスは、トラバーサルが完了するまで、各依存関係に対して再帰的に実行されます。 Webpackは、ブラウザがロードできるように、すべてのプロジェクトのモジュールを少数のバンドル(通常は1つだけ)にバンドルします。

Webpack 5の新機能:

Webpack 5は2020年10月にリリースされました。発表は長く、Webpackに加えられたすべての変更を調査します。すべての変更について言及することは不可能であり、このような初心者のガイドにとっても不要です。代わりに、いくつかの一般的なポイントをリストしようとします:

永続的なキャッシュを使用して、ビルドパフォーマンスを改善します。開発者は、ファイルベースのキャッシュを有効にすることができるようになりました。これにより、開発とビルドが高速化されます。
  • 長期キャッシュも改善されています。 WebPack 5では、最小化されたバンドルバージョンに影響を与えないコード(コメント、変数名)に変更された変更は、キャッシュの無効化を引き起こしません。さらに、決定論的な方法で短い数値IDをモジュールとブロックに割り当て、エクスポートに短い名前を割り当てる新しいアルゴリズムが追加されます。 WebPack 5では、デフォルトで生産モードで有効になっています。
  • バンドルサイズは、より良い木の揺れとコード生成により改善されました。 New Nested Tree Shaking機能のおかげで、Webpackはアクセスを追跡してネストされたプロパティをエクスポートできるようになりました。 CommonJSツリーシェーキングにより、未使用のCommonJSエクスポートを排除できます。
  • 最小サポートされているnode.jsバージョンは、6から10.13.0(LTS)に増加しています。
  • コードベースがクリーニングされました。 Webpack 4で非推奨としてマークされたすべてのアイテムを削除しました。
  • 自動node.jsポリフィルを削除します。 Webpackの以前のバージョンには、
  • などのネイティブNode.jsライブラリ用のポリフィルが含まれます。多くの場合、それらは不要であり、バンドルサイズを大幅に増加させます。そのため、Webpack 5はこれらのコアモジュールを自動充填し、フロントエンド互換モジュールに焦点を当てています。
  • crypto開発の改善として、Webpack 5を使用すると、ターゲットリストを渡してターゲットバージョンをサポートできます。ターゲットパスの自動決定を提供します。さらに、自動で一意の命名を提供し、ブロックロードに同じグローバル変数を使用して複数のWebpackランタイム間の競合を防ぎます。
  • コマンドは今
  • です。 webpack-dev-server webpack serve
  • file-loaderの使用を置き換えるリソースモジュールを導入します。 raw-loader url-loader
初心者:

今、私たちには強固な理論的基盤があります。実際にそれを実現しましょう。

最初に、新しいディレクトリを作成し、それに切り替えます。次に、新しいプロジェクトを初期化します:

mkdir learn-webpack
cd learn-webpack
npm init -y
ログイン後にコピー

次に、webpackとwebpack cliをローカルにインストールする必要があります(コマンドラインインターフェイス):

npm install webpack webpack-cli --save-dev
ログイン後にコピー

次に、srcディレクトリを作成し、index.jsを含むようにconsole.log("Hello, Webpack!");ファイルを入れます。これで、開発モードでWebpackを起動するためにdevタスクを実行できます。

前述のように、Webpackはデフォルトのエントリポイントを
npm run dev
ログイン後にコピー
に設定し、デフォルトの出力を

に設定します。したがって、ファイルのソースコードを取得し、最終コードを./src/index.jsファイルにバンドルすることです。 ./dist/main.js dev正しい出力を取得していることを確認するには、ブラウザに結果を表示する必要があります。これを行うには、index.jsディレクトリでmain.jsファイルを作成しましょう。

ブラウザでファイルを開くと、「こんにちは、Webpack!」が表示されます。 dist index.html

(スペースの制限により、次のコンテンツが簡単に要約され、コアステップとキーコードスニペットが保持されます。完全なチュートリアルについては、元のテキストを参照してください。)
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Getting Started With Webpack</title>
  </head>
  <body>
    <🎜>
  </body>
</html>
ログイン後にコピー

html-webpack-plugin:

プラグインをインストールして構成して、自動的に生成および更新して、手動の変更を避けます。

カスタムエントリと出力:

の変更、エントリファイルと出力ディレクトリとファイル名をカスタマイズします。 html-webpack-plugin最新のjavaScriptをES5:index.htmlインストール

に変換し、

を構成し、ES6コードをES5互換コードに変換します。 webpack.config.jsスタイルの処理:

インストール

およびに設定し、CSSファイルをインポートして適用します。 babel-loader webpack.config.js

リソース管理:ビルトインcss-loaderモジュールを使用して、写真などのリソースを処理します。 style-loader webpack.config.js

Webpack-dev-serverを使用して開発を加速します。

出力をクリーニングします:asset/resource

を使用して、出力ディレクトリをクリーニングします。

結論:webpack-dev-server

このチュートリアルでは、Webpackのコアコンセプトのみを紹介します。これは、他の多くの機能、プラグイン、さまざまなテクノロジーも提供します。 公式文書やその他の学習リソースを参照して、さらに研究することをお勧めします。

webpack faq(省略バージョン):clean-webpack-plugin

  • Webパックと他のモジュールパッカーの違いは? Webpackには強力なプラグインシステムがあり、複数のファイルタイプをサポートし、コードセグメンテーション機能を備えています。
  • 複数の環境に合わせてWebpackを構成する方法は? さまざまな構成ファイルを作成し、webpack-mergeを使用して構成をマージします。
  • WebpackはCSSをどのように処理しますか? style-loaderおよびcss-loaderを使用します。
  • Webpackのホットモジュール交換(HMR)は何ですか? ページを完全に更新せずに、実行時にモジュールの更新を許可します。
  • Webpack生産バージョンの構築を最適化する方法は? コード圧縮、ツリーの揺れ、コードセグメンテーションなど。
  • babelでwebpackを使用する方法は? インストールbabel-loaderと構成。
  • TypeScriptでWebpackを使用する方法は? インストールts-loaderまたはawesome-typescript-loader
  • Webpackを使用して画像を処理する方法は? 使用file-loaderまたはurl-loader(webpack 5はアセットモジュールを使用します)。
  • ReactでWebpackを使用する方法は? babel-loaderを使用してJSXを処理するには、react-hot-loaderを使用できます。
  • Webpack構成をデバッグする方法は? debug devtoolおよび
  • オプションを使用して、エラーメッセージとスタックトレースを表示します。

この略語されたチュートリアルが、Webpackをすばやく始めるのに役立つことを願っています。 詳細については、元のテキストを参照してください。

以上がWebpackの初心者向けガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? Apr 04, 2025 pm 02:42 PM

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

javascriptの分解:それが何をするのか、なぜそれが重要なのか javascriptの分解:それが何をするのか、なぜそれが重要なのか Apr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

JavaScriptは学ぶのが難しいですか? JavaScriptは学ぶのが難しいですか? Apr 03, 2025 am 12:20 AM

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は?
または:
Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は? または: Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Apr 04, 2025 pm 05:36 PM

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptの進化:現在の傾向と将来の見通し JavaScriptの進化:現在の傾向と将来の見通し Apr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? Apr 04, 2025 pm 05:09 PM

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Apr 04, 2025 pm 05:12 PM

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...

See all articles