0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JavaScriptファイルをParcelでビルドする方法まとめ

Posted at

備忘録も兼ねて、初心者さん用にParcelを使ったビルドの仕方をまとめました。

コーディングが終わったら

コーディングが終わったら、ビルドを経て一つの大きなファイルにアウトプットし、リリースできる状態にします。

具体的には、
①ビルド
・モジュールごとに開発していたらそれをひとまとまりのファイルにアウトプット
・使わないコードを削除してファイルを圧縮
②トランスパイル/Polyfilling
・古いブラウザでもコードが読み込まれるよう、モダンJavaScriptのコードをES5の文法へ揃える
 (⇨BABELというツールが行ってくれます)

これはもちろん自分でやるのではなく、ビルドツールを使い上記の作業を行っていきます。
この記事では、Parcelというビルドツールを使います。

Parcelとは

ビルドツール。
webpackはParcelより有名だが、設定ファイルなど作るのが難しい。
Parcelなら設定ファイルの作成が不要でサクッとビルドができます。

ビルドの仕方

npmを使ってツールをプロジェクトフォルダにインストールしてビルドしていきます。

npm initをしたらparcelをインストール。

ターミナルで、npm install parcel --save-dev
(ツール系は--save-devを文末につけて、package.jsonファイルのdevDependenciesに入るようにする)

②ビルドする

npm initをしたときにできるpackage.jsonファイルにスクリプトを書いていきます。

package.json
"scripts": {
  "start": "parcel index.html"
}

※ "start"の箇所は好きな文字列を入れてOK。
※ index.htmlの箇所はエントリポイントで、必要ならindex.html以外を入れてもOK。

ターミナルに戻り、npm run startとしてファイルをビルドします。

<補足>
私がインストールしたParcelのバージョンは1.12.4で、うまくビルドができませんでした。
別途parcel-bundlerを1.12.3でインストールするとうまくビルドができました!
npm i parcel-bundler@1.12.3

ビルドが上手くできたら、下記のようにターミナルにURLが出てきます。
Server running at http://localhost:1234
そのURLでブラウザを開くとlive-serverのようにファイル変更するたびに手動リロードなしでブラウザがリロードしてくれます

そしてプロジェクトフォルダにdistフォルダができていると思います。
それが最終的にリリースする用のフォルダになります。

③トランスパイル/Polyfilling

BABELを使いトランスパイルを行うのですが、Parcelは自動的にBABELを使いトランスパイルを行ってくれます。
(※Parcelがデフォルトで読み込んでくれるBABELは、@babel/preset-envというプリセット)
実際にdist/index.htmlが読み込んでいるscriptファイルを見ると、const等がvarに変わっているのがわかります。

ただ、BABELがしてくれることは、ES6文法をES5の文法にしてくれること。
文法はES5に変換してくれるのですが、.find()やPromiseなどES6で新たに追加された「機能」は変換してくれません。

ここでPolyfillingが必要になります。
やり方は、まずターミナルで下記のようにnpmでプロジェクトフォルダにインストール。
npm i core-js
npm i regenerator-runtime/runtime

そしてscript.jsに
import 'core-js/stable';
import 'regenerator-runtime/runtime';
を書くとライブラリを読み込みPollyfillをしてくれます。
import 'core-js/stable';だと、実際に使用していないES6のメソッド等も追加されてしまうので、ファイルサイズを気にするなら、例えばimport 'core-js/stable/array/find';と書いて必要なものだけインポートすることもできます
※ regenerator-runtime/runtimeは、Pollyfillingを非同期にしてくれるものです。

④ファイルを圧縮

package.jsonファイルのscripts部分位に下記のスクリプトを追加します。
"build": "parcel build index.html"
ターミナルでnpm run buildとすると、distに圧縮されたファイルが確認できると思います

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?