-
webpack入門〜react.js導入編〜
- 2016年7月25日
- React
- webpack
webpackでreact.jsのビルドも行う
前回:webpack入門 前回は複数のjsファイルを一つにまとめる、という内容について触れましたが、今回はreact.jsの独自規約であるjsxのjsへの変換を同時に行えるようにします。と同時に、ES6で書いたjsを様々なブラウザで解釈できるよう、ES5に変換もできるようにします。babel
jsxとか、ES6への変換は「トランスパイル」と呼ばれています。 このトランスパイルをするのに便利なライブラリ(トランスパイラ)群がbabelです。 reactのトランスパイルに必要なbabel-preset-react
ですとか、ES6のトランスパイルに必要なbabel-preset-es2015
といったように、babel-〜
を組み合わせて使うようになっています。
インストール
今回、直接プロジェクトにbabelをインストールするため、npmでインストールできるようにしておく必要があります。 以下のコマンドを実行します。$ npm init
と打つと、いろいろ聞かれますので、適当に答えていきます。
最後にyesと打つと、package.json
がプロジェクト直下に作成されます。
reactで実装しますので、react関連をインストールします。
$ npm install react react-dom --save-dev
最後に必要なbabel〜をインストールします。
webpackもプロジェクトにインストールする必要があります。
$ npm install --save-dev webpack babel-loader babel-core babel-preset-react babel-preset-es2015
コーディング
コンポーネントを作成し、ブラウザで表示できるところまでやってみましょう。react.jsの詳しい書き方については、 ES5のReact.jsソースをES6ベースに書き換える ですとか、 今からはじめるReact.js〜初めてのコンポーネント〜 などをご参照ください。前回のhello.jsはをhello.jsxと拡張子を変え、コンポーネントにします。
//hello.jsx
import React from 'react';
class Hello extends React.Component{
render(){
return (
<p>Hello {this.props.name} !!</p>
);
}
}
Hello.propTypes = {
name: React.PropTypes.string.isRequired
};
export default Hello;
index.jsおよびindex.htmlもreactに対応させます。
//index.js
import Hello from './hello.jsx';
import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(
<Hello name="webpack" />,
document.getElementById('content')
);
//index.html
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Webpack Tutorial</title>
</head>
<body>
<script src="dist/bundle.js"></script>
<div id="content" />
</body>
</html>
webpackの定義
コーディングができたら、webpack.config.js
を編集します。
moduleのloadersを追加します。
それぞれの意味については、
http://dackdive.hateblo.jp/entry/2016/04/13/123000
が詳しいです。
//webpack.config.js
module.exports = {
entry: {
index: './client/js/index.js'
},
output: {
path: __dirname + '/client/dist',
filename: 'bundle.js'
},
module: {
loaders: [
{
test: /\.js[x]?$/,
exclude: /node_modules/,
loader: "babel",
query:{
presets: ['react', 'es2015']
}
}
]
}
};
できたらビルド
$ webpack
して、index.htmlをブラウザで表示してみます。
この記事を書いた人 : 國田健史
スタッフブログタグ:
AWS bluebird css CSV docker docker compose electron ES6 es2015 Git Heroku ITコンサルティング JavaScript justinmind less mongoDB Node.js php PostgreSQL Private Space Promise React react-router reactjs Salesforce scss Selenium Builder selenium IDE Selenium WebDriver stylus TypeScript VirtualBox VisualStudioCode vue vuejs webpack システム開発プロジェクト セキュリティ ワイヤーフレーム 上流工程 卒FIT 帳票 要件定義 設計 電力小売業界
一覧へ戻る
AWS bluebird css CSV docker docker compose electron ES6 es2015 Git Heroku ITコンサルティング JavaScript justinmind less mongoDB Node.js php PostgreSQL Private Space Promise React react-router reactjs Salesforce scss Selenium Builder selenium IDE Selenium WebDriver stylus TypeScript VirtualBox VisualStudioCode vue vuejs webpack システム開発プロジェクト セキュリティ ワイヤーフレーム 上流工程 卒FIT 帳票 要件定義 設計 電力小売業界