declare function require(name:string); declare var process: any; import base = require("./base"); var path = require('path'); var _ = require('lodash'); var $ = require('gulp-load-plugins')({lazy: true}); var argv = require('yargs').argv; var runSequence = require('run-sequence'); var checkArguments = require('./helpers/checkArguments'); class BrowserReload extends base.BaseTask { constructor() { super(); return this; } static required:Array = ['url', 'proxy-middleware', 'browser-sync']; static taskName:string = 'browserReload'; static templatedConfig:any = { files: [ './lib/**/*.*', './.tmp/**/*.*', './test/assets/no-index/*.*' ], options: { server: { baseDir: [ './lib/', '/.tmp/', './test/assets/no-index/' ] } } }; static config(task, tasks, userOptions) { return { files: [], options: { logLevel: 'info', //silent info debug port: 3000, https: false, open: true, notify: false, browser: ['chrome'], server: { baseDir: [], directory: false, middleware: [], host: "127.0.0.1" }, ui: { port: 3001 }, watchOptions: { debounceDelay: 1000 }, logPrefix: "BrowserReload", logConnections: true, logFileChanges: false, startPath: "/" } }; } static initEvent() { //BrowserSyncEvents.on("init", BrowserReload.initEvent); console.log("BrowserSync is running!"); } static parseProxy(proxies, url, proxy) { if(!proxies || (proxies && !proxies.length)) { return []; } var proxyOptions, proxySites, website, _i, _len; proxySites = []; for (_i = 0, _len = proxies.length; _i < _len; _i++) { website = proxies[_i]; proxyOptions = url.parse(website.url); proxyOptions.route = website.route; proxySites.push(proxy(proxyOptions)); } return proxySites; } static gulp(options, settings, task, tasks):void { BrowserReload.checkArguments(options, settings, task, tasks); var config = settings; var url = require('url'); var proxy = require('proxy-middleware'); var browserSync = require('browser-sync'); var BrowserSyncEvents = browserSync.emitter; var reload = browserSync.reload; var proxies = BrowserReload.parseProxy(config.proxies, url, proxy); var canWatch = argv.watch; if(proxies && proxies.length && Array.isArray(config.options.server.middleware)) { config.options.server.middleware = config.options.server.middleware.concat(proxies); } if(!/^win/.test(process.platform)) { settings.options.browser = settings.options.browser.map(function(value){ if(value === 'chrome') { return 'Google Chrome'; } return value; }); } if(canWatch) { //BrowserReload.getWatchTask(tasks); } return browserSync.init(config.files, config.options); } } export = BrowserReload;