LoginSignup
11
7

More than 5 years have passed since last update.

Browsersync は body タグが無いと動かない

Posted at

概要

今年もよろしくお願いします。

Browsersync の紹介とハマったところを書きます。

Browsersync

browser-sync start --server --files "*.js,*.css,index.html",

このようなコマンドを実行すると、ローカルに HTTP サーバーが立てられ、そのページがブラウザで開かれます。

--files で指定したファイルが変更されると自動的にページがリロードされて便利です。

インストール

npm install browser-sync --save-dev

-g を付けずにインストールして、package.json の run script の start に書いておくとたいへん便利です。

pacakge.json

package.json
 {
  "name": "hogefuga",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "browser-sync start --server --files \"*.js,*.css,index.html\"",
    "compile": "browserify -t coffeeify main.coffee > main.js",
    "watch": "nodemon --watch *.coffee --ext coffee --exec \"npm run compile\""
  },
  "author": "ryohey",
  "license": "MIT",
  "devDependencies": {
    "browser-sync": "^2.10.1",
    "browserify": "^12.0.1",
    "coffeeify": "^2.0.1",
    "nodemon": "^1.8.1"
  }
}

npm run compile では browserify と coffeeify で CoffeeScript をコンパイルして js を1つにまとめてます。

npm run watch では coffee ファイルに変更があったら npm run compile を走らせるようにしています。

監視には coffee コマンドの -w オプションや watchify を使ってもいいのですが、nodemon で監視を行うことで、コンパイルする仕組みが変わったりしたときにも watch の方を変更しなくて済むので便利です。

nodemon は coffee を監視、browser-sync は js を監視という関係で、次のような流れでページがリロードされます。

  1. coffee を変更
  2. js が更新される
  3. リロードされる

ハマったところ

<!DOCTYPE html>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="style.css">
<canvas id="canvas" width="960" height="640"></canvas>
<script src="main.js"></script>

そしてやっとタイトルの内容ですが、browser-sync は body タグの後に script タグを挿入して何やらやっているらしく、こういう body が省略された html では動きません。

Google HTML/CSS Style Guide を見てから body と html を省略してきたので、思わぬハマりどころでした。

11
7
0

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
11
7