-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
81 lines (68 loc) · 1.96 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/**
* index.js
*
* @author: Harish Anchu <[email protected]>
* @copyright Copyright (c) 2015-2016, QuorraJS.
* @license See LICENSE.txt
*/
var util = require('util');
var Elixir = require('laravel-elixir');
var assign;
var browserSync;
/*
|----------------------------------------------------------------
| BrowserSync
|----------------------------------------------------------------
|
| Browsersync makes your browser testing workflow faster by
| synchronizing URLs, behavior, and code changes across
| across multiple devices. And, now it's in Elixir!
|
*/
Elixir.extend('browserSync', function (options) {
loadPlugins();
// Browsersync will only run during `gulp watch`.
if (Elixir.isWatching()) {
browserSync.init(getOptions(options));
}
new Elixir.Task('browserSync', function () {
if (Elixir.isWatching()) {
this.recordStep('Starting Browsersync');
}
}).watch();
});
/**
* Load the required Gulp plugins on demand.
*/
function loadPlugins() {
assign = require('lodash.assign');
browserSync = require('browser-sync').create();
}
/**
* Get all Browsersync options.
*
* @param {object|null} options
* @return {object}
*/
function getOptions(options) {
var config = Elixir.config;
return assign({
files: [
config.appPath + '/**/*.js',
config.get('public.css.outputFolder') + '/**/*.css',
config.get('public.js.outputFolder') + '/**/*.js',
config.get('public.versioning.buildFolder') + '/rev-manifest.json',
config.viewPath + '/*'
],
watchOptions: {
usePolling: true
},
reloadDebounce: 1000,
snippetOptions: {
rule: {
match: /(<\/body>|<\/pre>)/i,
fn: function (snippet, match) { return snippet + match }
}
}
}, config.browserSync, options);
}