Browsersyncで立てたサーバ上でテストをする際、オプションで指定したポート番号が埋まっていると別のポートで起動し、テストが失敗することがあります。
他にも、サーバの情報、例えば外部URLを他の処理に渡したいときにも役立ちます。
bs.getOption('オプション名')
例1 : bsインスタンスから情報を取得する
// Browsersyncサーバの起動(すでにポート9000が埋まっているとする)
var bs = require('browser-sync').create();
bs.init({server: 'app', port: 9000}); // 実際にはポート9001で起動する
// 起動後にサーバ情報を取得
setTimeout(function () {
// ポート番号
console.log(bs.getOption('port')); // 9001
// ローカルURL
console.log(bs.getOption('urls').get('local')); // http://localhost:9001
// 外部URL
console.log(bs.getOption('urls').get('external')); // http://10.49.5.12:9001
}, 2000);
名前のとおり.getOption()
では、他にもproxy
, scriptPath
などBrowsersyncの各オプションが取得できるようです。
例2 : コールバックの引数を使う
// Browsersyncサーバの起動
var bs = require('browser-sync').create();
// init()のコールバックで取得
bs.init({server: 'app'}, function (instance) {
console.log(instance.getOption('port'));
console.log(instance.getOption('urls').get('local'));
console.log(instance.getOption('urls').get('external'));
});
// イベントのコールバックで取得
bs.emitter.on('init', function (instance) {
console.log(instance.getOption('port'));
console.log(instance.getOption('urls').get('local'));
console.log(instance.getOption('urls').get('external'));
});
例1と同じように取得していますが、コールバック内のinstance
はbs
オブジェクトそのものではなく、bs.instance
にあたるようです。どちらのオブジェクトでも.getOption()
が使えました。
例3 : 外部ファイルからインスタンスを取得する
.create()
に文字列を渡すと、Browsersyncのインスタンスは名前ベースで共有できるので、他のファイルからでも起動中のサーバ情報を取得できます。
サーバ起動のスクリプト
// Browsersyncサーバの起動
var bs = require('browser-sync').create('test-server');
bs.init({server: 'app'});
別のファイル
// "test-server"インスタンスの取得
var bs = require('browser-sync').get('test-server');
// サーバの情報取得
console.log(bs.getOption('port'));
console.log(bs.getOption('urls').get('local'));
console.log(bs.getOption('urls').get('external'));
参考
※ この記事はbrowser-sync v2.11.1で確認しています。