doc.dev1x.org

Lumeに関するメモ

Lumeとは

リソース

環境構築

要件

ファイル構成

$ tree -a -I .git
.
├── .devcontainer.json
├── .env
├── Dockerfile
└── docker-compose.yaml

Dockerfile

FROM denoland/deno:1.40.2

WORKDIR /app

COPY . /app

RUN deno install --allow-run --name lume --force --reload https://deno.land/x/lume_cli/mod.ts

docker-compose.yaml

version: '3.7'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    env_file:
      - .env
    volumes:
      - type: bind
        source: "."
        target: "/app"
    ports:
      - ${PORT}:8080
    command: [ "deno", "task", "lume", "-s", "-w" ]

.env

PORT=8080

.devcontainer.json

{
    "name": "Lume",
    "dockerComposeFile": [
        "./docker-compose.yaml"
    ],
    "service": "app",
    "remoteUser": "root",
    "workspaceFolder": "/app",
    "customizations": {
        "vscode": {
            "extensions": [
                "ms-azuretools.vscode-docker",
                "denoland.vscode-deno"
            ]
        }
    }
}

Lumeプロジェクトセットアップ

$ docker-compose run app lume

セットアップ完了後のファイル構成

$ tree -a -I .git
.
├── .devcontainer.json
├── .env
├── _config.ts
├── Dockerfile
├── deno.json
├── deno.lock
└── docker-compose.yaml

サイト構築

プロジェクト構成

$ tree -a -I .git
.
├── .devcontainer.json
├── .env
├── .gitignore
├── Dockerfile
├── README.md
├── _config.ts
├── deno.json
├── deno.lock
├── dest
│   └── index.html
├── docker-compose.yaml
└── src
    ├── _data.yaml
    ├── _includes
    │   └── template.vto
    ├── asset
    │   ├── css
    │   ├── font
    │   ├── img
    │   └── js
    └── index.md

_config.ts

import lume from "lume/mod.ts";

const site = lume({
    src: "./src",
    dest: "./dest",
    server: {
        port: 8080,
    },
});

site.ignore();
site.copyRemainingFiles();

export default site;

_data.yaml

layout: template.vto

コマンドライン

サイトをビルド

deno task lume

ローカルサーバを起動

deno task lume --serve

ポートを指定してローカルサーバを起動

deno task lume --serve --port=8000

変更をウォッチする

deno task lume --watch

ビルドに関する設定

静的ファイルのコピー

site.copy([".jpg", ".gif", ".png"]);

コピー元から除外する設定(ignore)

site.ignore("your/ignore/path");

参考資料