Webパッケージ
ネットバッグは何ですか?
WebPackは、複数のJavaScript
とJSON
のファイルを1つのファイルに組み合わせたモジュールバンドルです.
Webパッケージを使用すると、依存関係にある複数のJavaScript
モジュールを1つのファイルに組み合わせることができるので、ES6
をサポートしていないimport/export
の古いブラウザでもモジュール機能を使用することができる.
また、loaderにより、JavaScript
やJSON
ではないファイルをモジュールにバインドすることもでき、モジュールを1つのモジュールに統合するほか、画像をデータURLに変換するなど、さまざまな自動化や最適化機能をサポートします.
Webパッケージの基本概念
Webパッケージを使用する基本概念は概ね次のようになります.
Webパッケージを使用する基本概念は概ね次のようになります.
Entry(エントリ)
モジュールをバンドルすると、WebPackは
Entry Point
に依存する複数のモジュールをバンドルします.デフォルト値は
./src/index.js
です.Entry Point
は、プロファイルで次のentry
のプロパティで変更できます.module.exports = {
entry : './[directory]/[entrySource]'
}
例えば、Entry Point
は、以下の構成においてmain.js
に依存するものとする.js
|- main.js
|- sum.jswebpack.config.js
このとき
sum.js
はEntry Point
であり、以下のように設定されている.webpack.config.js
module.exports = {
entry : './js/main.js'
}
このほか、main.js
を複数指定することもできる.詳細については、Entry Points|Webパッケージを参照してください.出力(Output)
Output(Output)は単語のように、Webパッケージモジュールがバンドルした結果をどこに出力するかを教える役割を果たします.
const path = require('path');
module.exports = {
output : {
filename : 'bundle.js',
path : path.resolve(__dirname, 'dist', 'js')
}
}
Entry Point
プロパティは、バインドファイルの名前付きプロパティであり、filename
はファイルの格納ディレクトリを指定します.また、
path
プロパティは絶対パスに設定する必要があります.この点に注意してください.Loader(ローダ)
上にも書いてありますが、Webパッケージは基本的に
path
とJavascript
のファイルのみをモジュールとして認識します.ただし、Webパッケージは、バインド中にモジュールをロードする際にLoaderを用いて前処理を行うことができるため、
JSON
や.css
などのファイルもモジュールとして使用することができ、ファイルをロードする際には、Loaderに.ts
を登録して変換するなど多様な操作を行うことができる.例えば、
babel
が、.css
の拡張子を有するファイルをバインドするために適用されると仮定する.css-loader
は、css-loader
ファイルをモジュールに含めるためのロードプログラムである.module.exports = {
module : {
rules : [{ test : /\.css$/, use : 'css-loader' }]
}
}
前述したように、css
属性内でロードプログラムをどのように適用するかを記述する.module.rules
プロパティは、正規表現を使用してどのファイルに適用されるルールを指定し、test
プロパティは適用されるロードプログラムを指定します.さらに、Loaderはフィルタ機能をサポートし、1つの
use
属性に対して複数のtest
を指定することができる.例えば、loader
によってバンドルされたcss-loader
を実際に適用するために、css
をスクリーニングすることができる.module.exports = {
module : {
rules : [{ test : /\.css$/, use : ['style-loader', 'css-loader'] }]
}
}
style-loader
のプロパティをフラットテキストに変更し、適用するLoaderを指定します.ただし右から左の順に適用することに注意!Plugin
Loaderがモジュールのロード時に前処理を担当する場合、Pluginはバインドされた成果物の最適化または加工を担当します.
use
を適用して、バンドルされた成果物を含むhtml
ファイルを生成します.const htmlWebpackPlugin = require('html-webpack-plugin');
const htmlWebpackPluginOption = { template : './html/main.html' };
module.exports = {
plugins : [ new htmlWebpackPlugin(htmlWebpackPluginOption) ]
}
ご覧のように、html-webpack-plugin
はplugin
プロパティに配列形式で追加されます.plugins
演算子を使用して、コンストラクション関数によって生成されたインスタンスを追加する必要があります.WebPackベースの使い方!
上記の内容に基づいて、簡単な実践を通じて、new
を含む各種babel
とLoader
を応用し、実際にファイルをバインドします!😆
まず、Plugin
を使用するために、初期化から開始する.
npm init -y
次に、バインド用のファイルを適切に作成します.実習で使用する書類の構造と内容は以下の通りである.
main.js
module.js
main.css
main.html
それでは、今からインターンシップに必要な各種パッケージをインストールしましょう.
npm i -D webpack webpack-cli babel-loader css-loader style-loader html-webpack-plugin
npm i -D @babel/core @babel/cli @babel/preset-env
npm
を用いたため,babel-loader
ファイルを生成し,babel.config.json
を設定した.babel.config.json
babel
の設置が完了したら、babel
の設置にしましょう!webpack.config.js
webpack
ディレクトリは/dist/jsです.一番下の
output
のオプションを指定するのは、target
からWebpack v5
を基準に変換するため、ES6
を適用してもbabel
に変換できないという問題があります.設定が完了したら、
es5
コマンドでバインドしましょう!正常に動作すると、上のログが残ります.バンドルされたファイルをチェック!
/dist/js/bundle.js
npx webpack
は自動的に圧縮され、可読性は低下するが、光硬化生成物である./dist/html/index.html
バンドルされたファイルを
webpack
のhtml
に自動的に挿入することによって生成された新しいhtml-webpack-plugin
ファイル.では、
html
ファイルを実行して、正常に動作しているかどうかを確認します.Chromeブラウザで正常に動作していることがわかります.では、古いブラウザも正常に動作しているかどうかを見てみましょう.
黄泉のブラウザIE 11でも正常に動作していることがわかります.ふ~ん
これにより、基本的なWebパッケージの設定と使用が可能になります.詳細については、webspack公式ドキュメントwebpackを参照してください.
実習環境
"@babel/cli": "^7.16.0",
"@babel/core": "^7.16.0",
"@babel/preset-env": "^7.16.4",
"babel-loader": "^8.2.3",
"css-loader": "^6.5.1",
"html-webpack-plugin": "^5.5.0",
"style-loader": "^3.3.1",
"webpack": "^5.64.2",
"webpack-cli": "^4.9.1"
参考資料
コンセプト|Webパッケージhttps://webpack.kr/concepts/
Reference
この問題について(Webパッケージ), 我々は、より多くの情報をここで見つけました
https://velog.io/@jaeung5169/웹팩Webpack
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(Webパッケージ), 我々は、より多くの情報をここで見つけました https://velog.io/@jaeung5169/웹팩Webpackテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol