-
webpackはバンドラ
-
最低限必要なパッケージ
-
webpackには実行モードが有る
-
webpack --mode development
: 非圧縮出力
-
webpack --mode production
: 圧縮出力
-
webpack
: 実行結果埋め込み
-
エントリポイント(デフォルトで
src/index.js
で読み込んだjs
ファイルが対象
- `js`以外のファイルを纏めるためのプラグイン的なモジュール
const path = require("path");
module.exports = {
entry: "./src/index.js",
output: {
filename: "main.js",
path: path.resolve(__dirname, "dist"),
},
module: {
rules: [
{
test: /\.scss$/,
// useは後ろから実行される
// sa(c)ssをcssに変換 -> cssをjsに読み込み -> jsのcssをhtmlのstyleに反映
use: ["style-loader", "css-loader", "sass-loader"],
},
{
// 拡張子 .ts の場合
test: /\.ts$/,
// TypeScript をコンパイルする
use: "ts-loader",
},
],
},
// import 文で .ts ファイルを解決するため
// これを定義しないと import 文で拡張子を書く必要が生まれる。
// フロントエンドの開発では拡張子を省略することが多いので、
// 記載したほうがトラブルに巻き込まれにくい。
resolve: {
// 拡張子を配列で指定
extensions: [
'.ts', '.js',
],
},
};
Babelはモダンコードをレガシーブラウザ対応コードへトランスパイルする
const path = require('path')
module.exports = {
module:{
rules:[
{
test: /\.js$/,
exclude: /node_modules/,
loader: "babel-loader"
}
]
}
}
-
babel-loader
には変換が必要な機能を取り扱うためのplugin
が必要
-
個別でプラグインを取り入れることも出来る
-
@babel/plugin-transform-classes
:Classを変換する
-
プラグインをまとめた
presets
を使用することで、個別でインストールが不要になる
{
"presets": ["@babel/preset-env"]
}
Webpack + babel + typescript
Loading...