🔖

Gulp + browser-sync + tailwindcssでHTMLコーディングする

2021/09/20に公開

HTMLのコーディングをする機会が来たのだが、最近ずっとReactのコードを書いてたため「更新したらリアルタイムに変更を知りたいしtailwindもCSSを勝手に生成して欲しいな、と思って調べたら上記の組み合わせで最低限のことは出来そうなので調べて環境を作ってみた。

環境設定

前提

  • tailwindcssを使う
  • gulpをタスクランナーとして使う

インストール

  1. nodejs はnodenvで入ってることが前提
  2. nodeのバージョン確認(今回は15.1.0を使う)
$ nodenv versions
* system (set by /Users/yamato/.anyenv/envs/nodenv/version)
  14.4.0
  15.0.1
  15.1.0
  1. 上記ならsystemが有効になってるのでnodenv local 15.1.0で変更する。変更したら以下のようになる。
$ nodenv versions                      
  system
  14.4.0
  15.0.1
* 15.1.0 (set by /Users/yamato/Src/proj_renewal_signalcompose.com/.node-version)
  1. package.jsonの作成
$ npm init -y

npm を使うときに「マイナーバージョンがあるのでアップデートしてね」的なのが出るが、 Cannot find module 'agentkeepalive' と出てアップデートできない時は npm install -g agentkeepalive --save でモジュールを入れてからアップデートしてください。

    "dev": "npx gulp",
    "build": "NODE_ENV=production npx gulp",
    "build-css": "NODE_ENV=production npx gulp css"
  1. gulpのインストール
$ npm install --save-dev gulp

設定についてはこんな感じ。

'use strict'

const gulp = require('gulp')
const { src, dest, series, parallel, watch, tree } = require('gulp')

const dev = require('browser-sync')

const browserSync = (done) => {
  dev({
    server: {
      baseDir: './site/'
    },
    startPath: 'index.html',
    files:'./site/**',
    port : 3000,
    notify: false,
    open: 'external',
  })

  done()
}

const cssSrc = './src/**/*.css'
const cssDest = './site/css/'

const css = () => {
  const postcss = require('gulp-postcss')

  return gulp.src(cssSrc)
    // ...
    .pipe(postcss([
      // ...
      require('tailwindcss'),
      require('autoprefixer'),
      // ...
    ]))
    // ...
    .pipe(gulp.dest(cssDest))
}

const watchFiles = (done) => {
  watch(cssSrc, css)
  done()
}

exports.default = series(css, watchFiles, browserSync)
exports.css = css
  1. tailwindcssのインストール
$ npm install tailwindcss
  1. gulp-postcssのインストール
$ npm install --save-dev postcss gulp-postcss
  1. autoprefixerのインストール
npm install --save-dev autoprefixer
  1. tailwindの設定ファイルを作る
$ npx tailwindcss init

purgeの設定を加えた。

module.exports = {
  purge: ["./src/**/*.css", "./site/**/*.html"],
  darkMode: false, // or 'media' or 'class'
  theme: {
    extend: {},
  },
  variants: {
    extend: {},
  },
  plugins: [],
}
  1. package.jsonにコマンドnpm run gulpを追加(内容はpackage.jsonをみてください)

Memo

const browserSync = (done) => {
  dev({
    server: {
      baseDir: './site/' // browser-syncが基準とするディレクトリを指定する
    },
    startPath: 'index.html', // 開きたいパスを指定する
    files:'./site/**', // 指定した値が変更されるとブラウザをリロードする
    port : 3000, // browsersyncサーバが使うポート番号を変更できる
    notify: false, // ブラウザ更新時に出てくる通知を非表示にする
    open: 'external', // ローカルIPアドレスでサーバを立ち上げる
  })

  done()
}

Discussion