gulpでサクッとPhantomJSを実行する


はじめに

仕事でPhantomJSを使ってWebアプリのスクリーンショットを自動取得する必要があったので、gulp(実際はさらにjenkinsと組み合わせる予定)からPhantomJSを実行するコードを書いてみました。

サンプル

gulpfile.js
var gulp = require("gulp");
var phantomjs = require('phantomjs-prebuilt');

gulp.task("phantomjs", function(done) {
  var program = phantomjs.exec('phantomjs-script.js');
  program.stdout.pipe(process.stdout);
  program.stderr.pipe(process.stderr);
  program.on('exit', code => {
    done();
  });
});
phantomjs-script.js
var page = require('webpage').create();

//指定したURLを開く
page.open('https://google.com', function(status) {
  console.log("Status: " + status);
  if(status === "success") {
    //screen capture
    page.render('google.png');
  }
  phantom.exit();
});

実行結果

$ gulp phantomjs
[23:19:21] Using gulpfile ~\Documents\node\node-v6.10.0-win-x64\gulpfile.js
[23:19:21] Starting 'phantomjs'...
Status: success
[23:19:25] Finished 'phantomjs' after 4.12 s

カレントディレクトリにgoogle.pngができていました。