20
22

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 5 years have passed since last update.

pugでhtmlをコンパイル

Last updated at Posted at 2019-02-23

Pugでhtmlをコンパイル

sassのようにhtmlでもコンパイルできないものかと探していたらpugがいい感じだったのでメモ
似たようなものでhamlがあるが、pugしました。
理由は下記

  • コンパイルがnode
  • 記法がsassに似ている

公式サイト
pug github

インストール

まずはNodeをインストールNode

node -v
v10.15.0
npm install pug -g
#今回は-gでマシン全体にしました。
#開発のみなら-Dでpackage.jsonにしてもいいかも

コンパイル

test.pug
doctype html
// コメント
html(lang="ja")
  head
    meta(charset="utf-8")
    style(src="css/style.css")
    title テスト
  body
    h1#sitettl Pugタイトル
    main.main
      h2.content_ttl サブタイトル
pug test.pug
pug.html
<!DOCTYPE html>
<!-- コメント-->
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <style src="css/style.css"></style>
    <title>テスト</title>
  </head>
  <body>
    <h1 id="sitettl">Pugタイトル</h1>
    <main class="main">
      <h2 class="content_ttl">サブタイトル</h2>
    </main>
  </body>
</html>

gulpでコンパイル

sassと同じくpugもgulpでコンパイルを自動でタスク処理をしました

必要なパッケージをインストール

# gulpをインストールgulpのバージョンはGulp 4

npm install gulp -D
npx gulp -v
# CLI version 2.0.1
# Local version 4.0.0

# pug 用のgulp パッケージをインストール
npm i -D gulp-pug gulp-notify gulp-plumber

gulpファイルを作成

ディレクトリの構造はこんな感じ


develop/
├──assets/
   ├──pug/ #ここにpugファイルを作成
public/ # ここにhtmlファイルを作成

gulpfile.js
// パッケージをインストール
const gulp = require("gulp");
const notify = require("gulp-notify");
const plumber = require("gulp-plumber");
const pug = require("gulp-pug");

//pug入力先、html出力先を記述
const paths = {
  src: {
    pug: "develop/assets/pug/**/*.pug",
  },
  public: {
    html: "public/",
  },
};

// setting : Pug Options
const pugOptions = {
  pretty: true,
};

// pugコンパイル
gulp.task("pug", done => {
  gulp
    .src(paths.src.pug)
    .pipe(
      plumber({ errorHandler: notify.onError("Error: <%= error.message %>") })
    )
    .pipe(pug(pugOptions))
    .pipe(gulp.dest(paths.public.html));
  done();
});

gulp.task("dev", () => {
  gulp.watch(paths.src.pug, gulp.task("pug"));
});

gulpを動かす

package.json
"scripts": {
  "dev": "gulp dev"
}
npm run dev

# Using gulpfile ~\gulpfile.js
# Starting 'dev'...
# Starting 'pug'...
# Finished 'pug' after 22 ms
# こんな感じになればdevelop/assets/pugのファイルがpublicにhtmlが作成される

20
22
2

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
20
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?