こちらの書籍より学ばせていただいた内容をまとめています。
create-react-appで簡単にアプリ立ち上げができるReact。このcreate-react-appがいかにありがたいものなのか、そのバックグラウンドで行われていることを知るために、これを使わずにアプリを立ち上げます。
ベースとなるHTMLを作成する
ブラウザでReactを動作させるためには、以下2つのライブラリが必要になります。
・React
・ReactDOM
これらライブラリをunpkg.comが提供するCDNからダウンロードして使用します。
ベースとなるHTMLがこちら
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>React Samples</title>
</head>
<body>
<div id="root"></div>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script></script>
</body>
</html>
webpack
Reactアプリをブラウザ上で動かすにはwebpackの構築が必要になります。
webpackとは
JavaScriptのモジュールバンドラー。
つまり、複数のモジュールを一つのファイルにまとめるものです。
webpackの役割
- JSXおよびES.nextの変換
- コンポーネント間の依存関係の管理
- 画像やCSSの最適化
create-react-appを使って環境構築をする場合は、これらwebpackが行っている仕組みを裏で構築してくれているため、設定不要です。
プロジェクトの作成
それではプロジェクトを作成していきます!
$ mkdir recipes-app
$ cd recipes-app
package.jsonを生成。-yを付けることで全てデフォルトを適用してくれます
$ npm init -y
reactとreact-domをinstall
$ npm install react react-dom serve
必要なファイルを作成し、開発を進めていきます。
webpackを使ったビルド環境の構築
webpackを使って、複数ファイルに分割されたモジュールを一つのファイルに結合します。このビルドは、ブラウザで効率よくロードするために行うものです。
$ npm install --save-dev webpack webpack-cli
webpackのインストールができたところで、webpackに対し、結合手順を教える必要があります。
そのため、プロジェクトごとに設定ファイルを記述します。
設定ファイルは、webpack.config.jsという名前で、ルートディレクトリに配置。
var path = require("path");
module.exports = {
// エントリファイルを指定し、このファイルを起点に依存モジュールのグラフを形成する
entry: "./src/index.js",
// 最終的なバンドルの出力先を指定
output: {
path: path.join(__dirname, "dist", "assets"),
filename: "bundle.js",
},
};
JSXをコンパイルするためにBabelをインストール
$ npm install babel-loader @babel/core --save-dev
これでBabelがインストールできたので、webpackに対し、Babelを使うように指示する。
module配下のrulesフィールドに追記する。
var path = require("path");
module.exports = {
// エントリファイルを指定し、このファイルを起点に依存モジュールのグラフを形成する
entry: "./src/index.js",
// 最終的なバンドルの出力先を指定
output: {
path: path.join(__dirname, "dist", "assets"),
filename: "bundle.js",
},
module: {
rules: [{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }],
},
};
rulesフィールドに追加した内容の意味
.jsファイルは全てbabel-loaderにより処理されるよう指定。
excludeには除外するファイルを指定。
Babelのプリセットを指定する
プリセットとは、Babelのプラグインのセットが定義されたもの。
$ npm install @babel/preset-env @babel/preset-react --save-dev
Babelの設定ファイルで、プリセットを指定する。
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
webpackを実行
$ npx webpack --mode development
これで、ビルドまで行うことができました。
まとめ
create-react-appを使えば、一瞬で構築してくれる内容を一から自分でwebpackで構築すると、結構大変です。。。もう使わない理由がわからないです。
以上、読んでいただきありがとうございました。
コメント