🐉
【webpack】babelの使い方
作成日:
2022/01/10
1
babelとは?
パッケージをインストール
babel-loader
@babel/core
@babel/preset-env
※2,3つ目については、babel7から@がつくようになった
※元々はbabel-core
, babe-preset-env
だった。
npm install --save-dev babel-loader @babel/preset-env@7.9.6 @babel/core@7.9.6
※バージョンによる不具合が生じるので、ここでは2つを7.9.6指定
package.jsonを確認
{
"scripts": {
"build": "webpack"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.9.6", //追加
"@babel/preset-env": "^7.9.6", //追加
"babel-loader": "^8.2.3", //追加
"clean-webpack-plugin": "^4.0.0",
"css-loader": "^6.5.1",
"file-loader": "^6.2.0",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^5.5.0",
"mini-css-extract-plugin": "^2.4.5",
"node-sass": "^7.0.1",
"pug-html-loader": "^1.1.5",
"sass-loader": "^12.4.0",
"style-loader": "^3.3.1",
"webpack": "^5.65.0",
"webpack-cli": "^4.9.1"
}
}
webpack-config.jsで設定を追加する
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {
entry: './src/js/index.js',
output: {
path: `${__dirname}/dist`,
filename: './js/bundle.js'
},
mode: 'development',
module: {
rules: [
//ここから追加
{
//拡張子が.jsを検知した時
test: /\.js/,
//ただし、node_modules/配下のjsは除外する
exclude: /node_modules/,
use: [
{
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
]
},
//ここまで追加
{
test: /\.(css|sass|scss)/,
use: [
{
loader: MiniCssExtractPlugin.loader
},
{
loader: 'css-loader'
},
{
loader: 'sass-loader'
}
]
},
{
test: /\.(png|jpg|gif|svg)/,
use: [
{
loader: 'file-loader',
options: {
name: 'images/[name].[ext]'
}
}
]
},
{
test: /\.pug/,
use: [
{
loader: 'html-loader'
},
{
loader: 'pug-html-loader',
options: {
pretty: true
}
}
]
}
]
},
plugins: [
new MiniCssExtractPlugin({
filename: './css/style.css'
}),
new HtmlWebpackPlugin({
template: './src/templates/index.pug',
filename: 'index.html'
}),
new HtmlWebpackPlugin({
template: './src/templates/menu.pug',
filename: 'menu.html'
}),
new CleanWebpackPlugin()
]
}
webpackを起動
npm run build
ブラウザでsub.jsを確認
webpack起動後、ブラウザでsub.jsを確認します。
ファイルは以下のような記述です。
export function hello(text) {
alert(text)
}
これだとbabelが機能しているか分からない。
ES6 形式に書き直して、再度buildしてみる
書き直したものが以下
// export function hello(text) {
// alert(text)
// }
export const hello = (text) => {
alert(text)
}
これをbuildしてブラウザ確認してES5 の書き方になっていればOK
webpackを起動後、再度ブラウザで確認してみる
事業会社にてコーダーをしています。制作は6年目。
インプットしたことをアウトプットしています。