メインコンテンツにスキップ ドキュメントナビゲーションにスキップ
Check

Parcelでの使用(Bootstrap & Parcel) v5.0.0-beta3新設 v5.2.0更新

Parcelを使用してBootstrapのCSSとJavaScriptをプロジェクトに組み込みバンドルする方法の公式ガイド。

※"v5.2.0"での変更はv5.2.0-beta1での変更も含みます。
このページの項目 v5.0.0-beta3新設 v5.2.0更新
bootstrap-parcel.png

Parcel は、開発者の経験によって生まれた Web アプリケーションバンドラです。設定不要で、マルチコア処理を利用した驚異的な高速パフォーマンスを提供します。

セットアップ(Setup)

Bootstrapを使用してParcelプロジェクトをゼロから構築しているため、実際に始める前に、いくつかの前提条件と事前の手順がある。このガイドでは、既にNode.jsがインストールされており、ある程度ターミナル(コマンドプロンプト)に精通している必要がある。

  1. プロジェクトフォルダを作成し、npmを設定。my-project フォルダを作成し、npmを -y 引数で初期化して、すべてのインタラクティブな質問を回避する。

    実行コマンド$ mkdir my-project && cd my-project
    $ npm init -y
  2. Parcelをインストール。webpackガイドとは異なり、ここでは構築ツールの依存関係は1つしかない。Parcelは、言語トランスフォーマー(Sassなど)を検出すると、それらを自動的にインストールする。--save-dev を使用して、この依存関係が開発用であり、本番用ではないことを通知する。

    実行コマンド$ npm i --save-dev parcel
  3. Bootstrapをインストール。これで、Bootstrapがインストールできる。ドロップダウン、ポップオーバー、ツールチップはPopperに依存しているため、Popper(@popperjs/core)もインストールする。これらのコンポーネントを使用する予定がない場合は、ここでPopperを省略しても可。

    実行コマンド$ npm i --save bootstrap @popperjs/core

必要なすべての依存関係がインストールとセットアップされれば、プロジェクトファイルの作成とBootstrapのインポートに取り掛かることができる。

プロジェクト構造(Project structure)

my-project フォルダを作成し、npmを初期化した。次に、src フォルダと dist フォルダも作成して、プロジェクト構造を完成させる。my-project から以下を実行するか、以下に示すフォルダとファイル構造を手動で作成する。

実行コマンド$ mkdir {src,src/js,src/scss}
$ touch src/index.html src/js/main.js src/scss/styles.scss

完了すると、プロジェクト全体は以下のようになる。

my-project/
├── src/
│   ├── js/
│   │   └── main.js
│   ├── scss/
│   │   └── styles.scss
│   └── index.html
├── package-lock.json
└── package.json

この時点で、すべてが適切な場所にあるが、Parcelはサーバーを起動するためにHTMLページとnpmスクリプトを必要とする。

Parcelを構成する(Configure Parcel)

依存関係がインストールされ、プロジェクトフォルダでコーディングを開始できるようになったら、Parcelを構成して、プロジェクトをローカルで実行できる。Parcel自体は設計上構成ファイルを必要としないが、サーバーを起動するにはnpmスクリプトとHTMLファイルが必要。

  1. src/index.html ファイルを作成。Parcelにはレンダリングするページが必要なので、index.html ページを使用して、CSSファイルやJavaScriptファイルなどの基本的なHTMLを設定する。

    src/index.html の設定例
    <!doctype html>
    <html lang="ja">
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Parcel付きBootstrap</title>
        <link rel="stylesheet" href="scss/styles.scss">
        <script type="module" src="js/main.js"></script>
      </head>
      <body>
        <div class="container py-4 px-3 mx-auto">
          <h1>Hello, Bootstrap and Parcel!</h1>
          <button class="btn btn-primary">Primary button</button>
        </div>
      </body>
    </html>

    上記では、BootstrapのCSSがParcelによって読み込まれるタイミングが確認できるように、div class="container"<button> を使用したBootstrapのスタイルを少しだけ入れている。

    Parcelは、Sassを使用していることを自動的に検出し、それをサポートするためにSass Parcelプラグインをインストールする。ただし、必要に応じて npm i --save-dev @parcel/transformer-sass を手動で実行することもできる。

  2. Parcel npmスクリプトを追加。package.json を開き、以下の start スクリプトを scripts オブジェクトに追加する。このスクリプトを使用して、Parcel開発サーバーを起動し、dist ディレクトリにコンパイルした後に作成したHTMLファイルをレンダリングする。

    package.json の設定例
    {
       // ...
       "scripts": {
         "start": "parcel serve src/index.html --public-url / --dist-dir dist",
         "test": "echo \"Error: no test specified\" && exit 1"
       },
       // ...
    }
  3. そして最後に、Parcelを起動。ターミナルの my-project フォルダから、新しく追加されたnpmスクリプトを実行:

    実行コマンド$ npm start
    実行中のParcel開発サーバー

このガイドの次が最後となる項目では、Parcelローダーをセットアップし、BootstrapのCSSとJavaScriptをすべてインポートする。

Bootstrapのインポート(Import Bootstrap)

BootstrapをParcelにインポートするには、2つのインポートが必要。1つは styles.scss に、もう1つは main.js にインポート。

  1. BootstrapのCSSをインポート。以下を src/scss/styles.scss に追加して、BootstrapのすべてのソースSassをインポート。

    src/scss/styles.scss の設定例
    // BootstrapのCSSをすべてインポート
    @import "~bootstrap/scss/bootstrap";

    必要に応じて、スタイルシートを個別にインポートすることもできる。詳細については、Sassカスタマイズのインポートの項目に記載。

  2. BootstrapのJSをインポート。以下を src/js/main.js に追加して、CSSをロードし、BootstrapのすべてのJSをインポート。PopperはBootstrapを介して自動的にインポートされる。

    src/js/main.js の設定例
    全てをインポート// BootstrapのJSをすべてインポート
    import * as bootstrap from 'bootstrap'

    バンドルサイズを抑えるために、必要に応じてJavaScriptプラグインを個別にインポートすることもできる。

    個別にインポートimport Alert from 'bootstrap/js/dist/alert'
    
    // または、必要なプラグインを指定:
    import { Tooltip, Toast, Popover } from 'bootstrap'

    Bootstrapのプラグインの使用方法の詳細については、JavaScriptの解説に記載。

  3. これで完了!🎉BootstrapのソースSassとJSが完全に読み込まれると、ローカル開発サーバーは次のようになる。

    Bootstrapで実行されているParcel開発サーバー

これで、使用するBootstrapコンポーネントの追加が始められる。追加のカスタムSassを組み込み、BootstrapのCSSとJSの必要な部分のみをインポートして構築を最適化する方法については、完全なParcelサンプルプロジェクトを必ずチェックして下さい。

【変更履歴】
  • 【v5.2.0】
    • ガイドを全面的に書き直して更新
    • 設定方法がParcel2に対応

ここで何か間違いがあったり、情報が古くなっていたら、GitHubのIssuesを開いて指摘して下さい。トラブルシューティングのサポートが必要なら、GitHubで検索するか、ディスカッションを始めて下さい。