🚀 はじめに
Parcel は、開発者の経験によって生まれた Web アプリケーションバンドラです。設定不要で、マルチコア処理を利用した驚異的な高速パフォーマンスを提供します。
まずは yarn または npm で Parcel をインストールしましょう。
Yarn:
yarn global add parcel-bundler
npm:
npm install -g parcel-bundler
プロジェクトルートに以下のコマンドを使って package.json を作成しましょう。
yarn init -y
または
npm init -y
Parcel はどんな種類のファイルでもエントリーポイントとして扱うことができますが、HTML または JavaScript ファイルから始めるのがよいでしょう。HTML ファイルから相対パスでメインとなる JavaScript ファイルをリンクすると、Parcel はそれを処理し、参照を出力したファイルの URL に置き換えます。
次に、index.html と index.js ファイルを作成しましょう。
<html>
<body>
<script src="./index.js"></script>
</body>
</html>
console.log('hello world')
Parcel には開発用サーバーが組み込まれており、ファイルを変更した際に自動的にアプリケーションを再ビルドします。 また、開発を効率的にするためホットモジュールリプレイスメントをサポートしています。次のようにエントリーファイルを指定してみましょう。
parcel index.html
では、ブラウザで http://localhost:1234/ を開いてみましょう。もし、ホットモジュールリプレイスメントが動いていない場合はエディタの設定を編集する必要があるかもしれません。 -p <ポート番号>
オプションを使うことでデフォルトのポート番号を上書きすることができます。
自分でサーバーを持っていない場合、あるいはアプリケーションがすべてクライアントでレンダリングされる場合には、Parcel の開発用サーバを使いましょう。自分でサーバーを持っている場合には、代わりに Parcel を watch
モードで実行することができます。ファイルが変更されると自動で再ビルドを行い、ホットモジュールリプレースメントをサポートしますが、Web サーバーは起動しません。
parcel watch index.html
複数のエントリーファイル
万が一、あなたが複数のエントリーファイルを持っている、たとえば index.html
と about.html
があるとした場合にはバンドラーを起動するために 2 種類の方法があります。
ファイル名を指定する方法
parcel index.html about.html
トークンを使って glob を作る方法
parcel *.html
NOTE: もしこのようなファイル構造をしている場合
- folder-1
-- index.html
- folder-2
-- index.html
http://localhost:1234/folder-1/ を開いてもうまくいきません。http://localhost:1234/folder-1/index.html のように、ファイル名を正確に指定する必要があります。
本番用にビルドする
本番用のビルドを行うときは、 build
モードがファイルの監視を無効にして、一度だけビルドを行います。 詳細は本番を参照してください。
Parcel をプロジェクトに追加する
時には Parcel をグローバルインストールできないこともあるでしょう。(例:他人のマシンや CI を使ってプロジェクトを自動でビルドしたいとき)こういう場合には、ローカルパッケージとして Parcel をインストールすることができます。
yarn でインストールする方法
yarn add parcel-bundler --dev
npm でインストールする方法
npm install parcel-bundler --save-dev
それから、プロジェクトの package.json
にこれらのタスクスクリプトを追加します。
{
"scripts": {
"dev": "parcel <your entry file>",
"build": "parcel build <your entry file>"
}
}
すると、以下のように実行することができるようになります
# 開発モードで起動する
yarn dev
#または
npm run dev
# 本番モードでビルドする
yarn build
#または
npm run build
Help us improve the docs
If something is missing or not entirely clear, please file an issue on the website repository or edit this page.