LoginSignup
8
4

More than 5 years have passed since last update.

実行中のBrowsersyncサーバのポートやURLを取得する

Last updated at Posted at 2016-03-10

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と同じように取得していますが、コールバック内のinstancebsオブジェクトそのものではなく、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で確認しています。

8
4
1

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
8
4