WebpackでBabyコンセプトを使う
Babyは?
JavaScript compiler
babelはJavaScriptで結果を生成するコンパイラです.
2015年にリリースされたES 6ポストバージョン(ESNext)の新しい構文を既存のブラウザで使用するにはbabelを使用する必要があります.
babelではJSX(react)、スタティックタイプ言語(Type Script)、コード圧縮、推奨フェーズ構文などを使用できます.
設定
npm i -D @babel/core
npm i -D @babel/cli
npm i -D @babel/preset-env
npm i -D @babel/preset-react
@babel/core:babelコア機能を備えた必須パッケージ@babel/cli:ヘルプ端末babelコマンドの使用
@babel/prefet-env:コード構文変換(サポートされているブラウザ占有率、互換性設定など)の設定を支援
@babelプリセット-react:JSXファイルをコンパイルするためのreactプリセット
npm i -D webpack webpack-cli webpack-dev-server
npm i -D babel-loader css-loader file-loader
npm i -D html-webpack-plugin mini-css-extract-plugin
npm i -D sass sass-loader
Webpackと併用する場合Webpack:webpackモジュール
Webpack-cli:ヘルプ端末のwebpackコマンドの使用
Webpack-dev-server:nodemon Webpack環境で開発サーバを作成する
babel-loader:Webパッケージとバーベルのバインド
css-loader:Webパッケージのcssファイルの読み取りを支援
file-loader:画像をロードするためのWebパッケージのファイルのロードを支援します.
html-webpack-plugin:バインドされたhtmlファイルにcssとjsファイルを追加
mini-css-extract-plugin:style-loader htmlのスタイルラベルの代わりに、個別のcssファイルを使用して生成
sass-loader:Webパッケージのsassファイルの読み取りを支援
それ以外にも、いろいろな使用をインストールすることができます.
Webpack設定
babelには多くの実現方法がある.
たとえば、@babel/cliを使用して実行してもよいし、@babel/coreを直接実行してもよいし、@babel/registerを使用して実行してもよい.Webpackでbabel-loaderとして実行する方法について説明します.
const path = require('path');
const RefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin')
module.exports = {
name: 'word-relay-setting',
mode: 'development', //실서비스 : production
devtool: 'eval',
resolve:{
extensions:['.js', '.jsx', '.css']
},
entry: {
app:['./client'],
},
module: {
rules:[{
test:/\.jsx?$/,
loader:'babel-loader',
options:{
presets:[
['@babel/preset-env', {
targets:{
browsers:['> 1% in KR'],
},
debug: true,
}],
'@babel/preset-react'],
plugins:[
//babel이 최신문법을 옛날것으로 바꿀때, 핫 리로딩까지 추가.
'react-refresh/babel',
],
},
}],
},
plugins:[
new RefreshWebpackPlugin(),
],
//출력
output:{
//현재 폴터와 dist 경로 합쳐줌.
path:path.join(__dirname, 'dist'),
filename:'app.js',
publicPath:'/dist/',
},
//서버설정
devServer:{
publicPath:'/dist/',
hot: true,
},
};
pathはnodeです.jsのコアモジュールは、パスに関連する様々な機能を提供します.現在の目標はclientです.jsxとwordrelay.jsxはアプリケーションをマージします.jsで実行されます.
entryはバインドするモジュールのエントリファイルです.現在のクライアント.jsxはwordRelayを読み込み中です.だからentryのアプリにclientだけ入れておけばいいのです.
moduleはentryファイルを読み込み、moduleをoutputに適用します.moduleのrulesは配列形式で存在する.testは正規表現を使用してターゲットファイルのフォーマットを指定します.loaderはbabelルールを適用し、loaderをターゲットファイルに適用します.
optionsではbableのオプションを設定できます.presetsは、@babel/prefut-envと@babel/prefut-reactを使用する多くのプラグインの組み合わせです.
outputは、バインド後に出力するファイルのパスとファイル名を指定するだけです.
Babel-polyfill
poliyfillは、ブラウザでサポートされていない機能に互換性タスクを埋め込むことを意味します.
bableは変換構文の役割のみを実行します.
最新の関数を使用するにはbabel-polyfillを使用する必要があります.
['@babel/preset-env',
{
targets:{
//한국에서 점유율 5%이상인 브라우저 지원
//'last 5 chrome versions' -> 크롬 최신에서 5버전 전까지만 지원
browsers:['> 1% in KR'],
},
debug: true,
}],
上に示すコードでは、この部分は塗りつぶしが追加された部分です.@babel/prefet-envは、適切な束ファイルサイズを維持し、マルチセグメントペンの追加の負担を軽減します->ターゲット構文の作成
chanyeong
Reference
この問題について(WebpackでBabyコンセプトを使う), 我々は、より多くの情報をここで見つけました https://velog.io/@leehyunho2001/Babelテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol