以前何かがきっかけでチェックしたツール「HTML Inspector」の導入を検討しているのですが、HTMLファイルにツールの読み込み・起動をするためのscript要素を書かなければならないのがハードルだなと感じました。リリース時にうっかりコードを残したままにする可能性がありますし、HTML設計時にコードを追加したりリリース時にコードを削除したりするのがとても手間です。コマンドラインでの操作もイマイチ...。
そこで思いついたのが、Gruntのconnect-livereloadのように、自動でスクリプトをHTMLにインジェクションすることでした。早速試してみたところ、connect-livereloadのindex.jsにHTML Inspectorの読み込みを追加すると、ひとまず目論見通り動いてくれましたので、導入方法をご紹介します。
導入方法
下記の記述で、ブラウザ拡張の不要のライブリロードとHTML Inspectorが一度に動作します。
パッケージの導入
パッケージがhideki-a / connect-inject-snippetsにあるので、次のコマンドでプロジェクトディレクトリにインストールします。
npm install --save-dev git://github.com/hideki-a/connect-inject-snippets.git
Gruntfileの編集
Gruntfile.coffeeを下記のように設定します。Gruntfile.jsの方は、Js2coffee等で変換してみてください。
'use strict' LIVERELOAD_PORT = 35729 supportSnippet = require('connect-inject-snippets')( port: LIVERELOAD_PORT htmlInspector: true ) mountFolder = (connect, dir) -> return connect.static(require('path').resolve(dir)) module.exports = (grunt) -> grunt.initConfig connect: livereload: options: hostname: '0.0.0.0' port: 3501 middleware: (connect, options) -> return [ supportSnippet mountFolder(connect, './htdocs') ] # Load grunt tasks. require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks) # Register tasks. grunt.registerTask 'default', [ 'compass:dev' 'connect' 'watch' ] return;
補足
- htmlInspectorをfalseにすると、HTML Inspectorが無効になります。
- inspectorConfig オプションで、Configuring HTML Inspectorの内容が指定できます。
supportSnippet = require('connect-inject-snippets')( port: LIVERELOAD_PORT htmlInspector: true inspectorConfig: excludeElements: [".page-contents"] )