webpack + Babelで始める新しいJavaScript – 3

公開日 2017/11/22 19:35
更新日 2023/08/30 15:55

※2017年11月時点の情報です。

前回までは、webpackとBabelの準備やES2015で追加された機能のなかでよく使うものを紹介いたしました。

記事の中では紹介できませんでしたが、他にも関数実行時の引数不足で起こる不具合を防ぐ『デフォルト引数』や、可変長引数の関数の作成をわかりやすくする『rest引数』、prototypeで実装していたクラスを書きやすくした『class構文』などもあります。

小規模な開発だと使わなくても困らないので割愛しましたが、どれも便利なのでJavaScriptを続けていると使う時が来ると思います。

第1回で必要なnodeモジュールはインストールしているので、トランスパイルの準備から始めます。まずは、コマンドラインで作業フォルダへの移動をお願いいたします。

移動は次のコマンドをコマンドラインツールで実行してください。


cd 作業ディレクトリのパス(使用している作業ディレクトリのパスを指定してください。)
    
webpack + Babelで始める新しいJavaScript – 1

webpack + Babelで始める新しいJavaScript – 1

ES2015の導入から実装までを連載形式で簡単に紹介いたします。新しいJavaScriptを使ってみたい方におすすめです。

webpack + Babelで始める新しいJavaScript – 2

webpack + Babelで始める新しいJavaScript – 2

こちらでは、実際にES2015の記述を書いてトランスパイルする前に、ES2015で追加された仕様についてよく使うものを紹介いたします。

webpack用の設定ファイルを作る

トランスパイルをする前に、webpackの設定ファイルを準備します。

下記のコードをコピーペーストして、『webpack.config.js』のファイル名で作業フォルダに保存してください。


module.exports = {
  entry: './src/entry.js',
  output: {
    filename: './dest/bundle.js'
  }
}
    

設定ファイルはJSON形式で記載します。例の各オプションの内容を簡単にまとめると以下の通りです。

entry もとにするjsファイルを指定する
output.filename jsファイルをまとめた後、出力するファイル名を指定する

これはwebpackを実行するために、最低限必要な情報です。

例では、srcディレクトリ内のentry.jsをもとにして、destディレクトリ内にbundle.jsとして出力するように設定しています。

本来はきちんと内容を理解した上で使うのが一番なのですが、今回は、ES2015の体験が最優先なので、ひとまずコピーペーストで問題ありません。

webpack.config.jsにBabelを使う指示を記載する

moduleプロパティにrulesプロパティを定義し、ファイルごとに使用するloaderを設定していきます。

loaderはwebpackでファイルを読み込むために使うものという認識で今は問題ありません。

今回はjsファイルをbabel-loaderに通したいので、webpack.config.jsを以下のように書き換えて、上書き保存してください。


module.exports = {
  entry: './src/entry.js',
  output: {
    filename: './dest/bundle.js',
  },
  module: {
    rules: [{
      test: /\.js$/,
      use: 'babel-loader'
    }]
  }
}   

testプロパティにファイル名、useプロパティに使用するloaderを記載します。

この設定を追記することで、webpackが.jsファイルを読み込む際に、Babelを経由するようになります。

loaderには他にも、画像ファイル用、sassファイル用など様々なものがありますので、使う際に調べてみることをおすすめします。

webpackを実行するための設定を『package.json』の『scripts』に追記する

wbpackはインストール済みですが、そのままでは実行するためのコマンドが長くなるので、package.jsonのscriptsプロパティに以下の内容を追記して、上書き保存してください。


"webpack": "webpack",
    

追記後package.jsonが次の例のようになっていれば大丈夫です。


{
  "name": "※※※作業フォルダ名※※※",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "webpack": "webpack", 
    "test": "echo \"Error: no test specified\" && exit 1",
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2",
    "babel-preset-es2015": "^6.24.1",
    "webpack": "^3.8.1"
  }
}
    

この設定を追記した後、コマンドラインで『npm run webpack』と記載して実行することで、webpackが実行されるようになります。

Babelの動作設定を『package.json』に追記する

BabelはデフォルトのままだとES2015形式を変換してくれませんので、変換するように指示する必要があります。

『package.json』に以下の内容を追記します。


"babel": {
  "presets": ["es2015"]
},
    

追記後package.jsonが次の例のようになっていれば大丈夫です


{
  "name": "※※※作業フォルダ名※※※",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "webpack": "webpack", 
    "test": "echo \"Error: no test specified\" && exit 1",
  },
  "babel": {
    "presets": ["es2015"]
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2",
    "babel-preset-es2015": "^6.24.1",
    "webpack": "^3.8.1"
  }
}
    

確認用のhtmlファイルを準備する

ブラウザ確認用のhtmlファイルは事前に準備します。

次の内容でhtmlファイルを作成し、destディレクトリに保存してください。


<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>webpack+BabelでES2015</title>
</head>
<body>
  <h1>webpack+BabelでES2015</h1>
  <script src="./bundle.js"></script>
</body>
</html>
    

保存後、ディレクトリ構成は次のような形になっています。


作業フォルダ
├─package.json
├─webpack.config.js
├─dest
│ └─index.html
└─node_modules
  └─省略
    

body閉じタグの直前で、bundle.jsを読み込むようにしています。しかし、現在時点でbundle.jsは存在しないためhtmlファイルを開いても何も起こりません。

jsファイルを準備してトランスパイルする

長かったのですがここからが本題です。実際にトランスパイルを行います。

ページを開いたときにページタイトルをアラートで表示するライブラリと、それを読み込むjsファイルを作成し、srcディレクトリに保存します。

動作の確認はブラウザで行いますので、上で作成したhtmlファイルを事前にブラウザで開いておくと確認しやすいのでおすすめです。

それでは下記のコードをそれぞれコピーペーストして、srcディレクトリに保存してください。

library.js


const AlertTitle = function () {
  window.addEventListener('load', ()=>{
    alert(document.title);
  })
}

export default AlertTitle
    

entry.js


import AlertTitle from './library.js'

const App = new AlertTitle();
    

最終的に次の例のようなディレクトリ構成になっていれば問題ありません。


作業フォルダ
├─package.json
├─webpack.config.js
├─dest
│ └─index.html
├─src
│ ├─library.js
│ └─entry.js
└─node_modules
  └─省略
    

ここまで完了したら準備完了です。残りは、webpackを実行してBabelでトランスパイルを行うのみです。

コマンドラインツールで、次のコマンドを実行してください。


npm run webpack
    

エラーが発生せずコマンドプロンプトに戻ったら成功です!

destディレクトリを開いて、bundle.jsが出力されていることをご確認ください。

ディレクトリ

ファイルを確認した後、ブラウザを更新すると、ページタイトルがアラートで表示されるはずです。これでwebpack + babelを使った新しいJavaScriptは終了です。

ディレクトリ

npmからjQueryをダウンロードして、インポート

このままではあまりにも実用向けではないので、使用頻度の高そうなjQueryのダウンロードとインポートまでを紹介いたします。

jQueryなどの汎用的なライブラリはnpmのサーバーからダウンロードすることが可能です。

ダウンロード後はスクリプト内で読み込ませることが可能です。まずはコマンドラインツールで次のコマンドを実行して、jQueryのダウンロードをお願いします。


npm i -S jquery
    

その後、entry.jsを次のように書き換えて、再度webpackを実行してください。


import $ from 'jquery'
import AlertTitle from './library.js'

AlertTitle();

$('body').append('<p>jQuery Add</p>');
    

ブラウザを更新すると、jQuery Addという文字列がブラウザに表示されたと思います。

npmでダウンロードした後はjQueryの記法も手軽に使えるようになります。

これはES2015ではなく、npm(node)とwebpackの機能ですが、ライブラリの管理が非常に楽になります。

見本

まとめ

ES2015の使い方についてまとめさせていただきました。

実はこの記事だけでは情報は足りていません。webpackのloaderや、Polyfillのことなど、知らないと不便なことはまだまだあります。

JavaScript界隈は日進月歩で新しい仕様が導入されているので、まずはES2015の理解を深められるように励みます。

準備することが多く、手間がかかるように見えますが、よく使うモジュールを記載したpackage.jsonを事前に用意しておけば、npmコマンドですぐに準備が整うので新しいプロジェクトとは相性が良いのです。どうぞ一度お試しください。

業務で使うことはまだ少ないかもしれませんが、使ったことが無い方は一度使ってみることをおすすめいたします。

この記事がES2015以降のJavaScriptの技術に触れるきっかけになれば幸いでございます。

この記事を書いた人

SEOタイムズ 編集部

SEO対策実績「20,000社」を超えるGMOソリューションパートナー株式会社がインハウスSEOに取り組む企業様・個人に向けSEO情報を発信。

"Web初心者にもわかりやすく"をコンセプトにSEO対策情報をお届けします。

ランキング

  • デイリー
  • ウィークリー
1
【GA4】平均エンゲージメント時間とは?定義と滞在時間との違いを徹底解説
2023/02/27 12:00
アクセス解析
#アナリティクス
2
【2024年2月最新】X(旧Twitter)の使い方!アカウントの作成手順から基本・応用まで紹介【初心者向け】
2023/12/22 06:00
SNS
3
ボタンデザインはCSSで作ろう!使えるボタンデザイン27選!
2023/06/27 09:00
Webデザイン
4
2024年最新版!画像検索のおすすめサイト10選
2023/08/03 12:00
Webデザイン
5
【CSSコピペで簡単&解説付き】文字装飾に使えるデザインアイディア37選
2023/11/14 09:00
Webデザイン
1
【2024年2月最新】X(旧Twitter)の使い方!アカウントの作成手順から基本・応用まで紹介【初心者向け】
2023/12/22 06:00
SNS
2
Googleアカウントからログアウトする方法をAndroid・iOS別で解説!
2023/11/11 12:00
Webの基礎知識
3
【cssコピペでOK】見出しデザイン37選!cssで好みの見出しを作ろう!
2023/08/01 09:00
Webデザイン
4
Brave(ブレイブ)ブラウザとは?4つの特徴や注意点・使い方を徹底解説
2023/10/25 09:00
Web
5
【2024年最新】企業キャッチコピー78選!(業界別まとめ)
2023/12/15 09:00
Webマーケティング

SEOタイムズとは?

SEOタイムズとは?

SEOタイムズは、Webマーケティングに取り組むWeb担当者向けのSEO対策特化型の情報メディアです。テーマは”AI時代のSEO対策”。

AIとの共存が求められる時代。検索エンジンまわりにおいては、利便性がさらに高まり進化を続けていますが、人々の行動から“調べる”という行為はなくなるものではありません。

SEOの本質は変わらず、時代に合った良質なコンテンツを発信することで集客効果が得られる環境は継続されます。
SEOタイムズが、あなたのWebマーケティング戦略を成功に導きます。