Parcelで静的ページをつくってみた

2018年10月21日 engineering

背景

だいぶ昔に、自分のホームページ製作をやろうかなーと思い、中途半端に作って放置してたのですが、 今回重い腰を上げて製作を始めようとしました。

しかし、そんな私の前に立ちふさがったのは、はるか昔に作成したまま動かぬものと化したgulpfile。
何もしてないのに壊れたってやつです。(多分npmとかのバージョンガンガン上げてたからそれ)

もうエラーを直すのも億劫なので、ビルド環境を作り直そうと思いちょっと前から気になっていたparcelを使って見ました。

結論から言うと、かなり簡単にサクッと導入できたので最高でした。

せっかく試したので軽くまとめておきます。

前提

すごくシンプルなこんなサイトを公開したかった(https://foresta.me)

  • 公開したいのはHTMLファイル1つ
  • CSSはSASSを使いたい
  • JSはそんなに書かない想定

導入

最初に今回対応した、ページのリポジトリはこちらです。
(https://github.com/foresta/foresta.me)

今までのgulpfileなどを全削除して、npm initからはじめました。

$ npm init
$ npm i -D parcel

今回のケースだと環境構築は以上で終了なので非常にお手軽です。

ローカルでの開発

今回作成したページのディレクトリ構成はこんな感じになっています。

$ tree -I "node_modules"
.
├── README.md
├── dist/
├── package-lock.json
├── package.json
└── src
    ├── app.js
    ├── images
    │   └── profile.jpg
    ├── index.html
    └── sass
        ├── _base.scss
        ├── _color.scss
        ├── _font.scss
        ├── _media-query.scss
        ├── _reset.scss
        └── style.scss

4 directories, 20 files

以下のコマンドを打つと、ビルドとローカルにサーバーが立ち上がるのでそこで動作確認しつつページを実装していけばOKな感じです。 (自分が試した時は, localhost:1234 が立ち上がりました)

$ npx parcel ./src/index.html

自分はnpmスクリプトとして以下のように設定しました。

{
  // ...

  "scripts": {
    // ...
    "start": "npx parcel ./src/index.html",
    // ...
  },

  // ....
}

これで、npm run start でローカルサーバーが起動するようになります。

プロダクション用にビルド

実際にサーバー上に配置する際は以下のようにしてビルドしてやればOKです。

$ npx parcel build ./src/index.html

こちらも例のごとく, npmスクリプト化してます。

{
  // ...

  "scripts": {
    // ...
    "build": "npx parcel build ./src/index.html",
    // ...
  },

  // ....
}

自分の環境だとjenkinsとかで、masterブランチへのpushをhookして以下のようなスクリプトでデプロイをしてます。

npm install
npm run build

rsync -rlptgoD --delete --exclude ".git/" jenkinsのワークスペースへのパス/dist/ デプロイ先のパス

まとめ

フロントエンド力がそんなにない自分でも、非常に簡単に導入できてハッピーでした。 今回のような簡単な構成のページをサクッとリリースするのには、parcelは割と相性が良いのではないかと思います。

かなり楽できたのでおすすめです。

参考