-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
127 lines (119 loc) · 3.09 KB
/
gulpfile.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
var path = require('path');
var gulp = require('gulp');
var {PhpServer,
SyncServer,
WebpackTask,
SassTask} = require('lori-scripts');
var loriConfig = require('./lori.config');
/**
* ****************************************
* Watch list
* ****************************************
* watch lists for all files sass
*/
var watchlist = {
sass: [
'src/styles/*',
'src/styles/**/*',
'src/styles/**/**/*',
]
};
/**
* ****************************************
* Webpack Task
* ****************************************
*/
gulp.task('webpack', function(){
let task = new WebpackTask({
source: path.resolve(__dirname, 'src/app.jsx'),
config: require('./webpack.config.js'),
destination: path.join(__dirname, 'public/assets'),
callback: syncServer
});
task();
});
/**
* ****************************************
* SASS Task
* ****************************************
*/
gulp.task("sass", function(){
let task = new SassTask({
source: path.resolve(__dirname, 'src/styles/style.scss'),
options: { style: 'expanded', sourcemap:true },
file: 'app.css',
destination: path.join(__dirname, 'public/assets/css')
});
task();
// watch for changes in sass file
watch();
});
/**
* ****************************************
* PHP Server
* ****************************************
* BrowserSync by default can't actully listen for
* php files so as a fix we start a php server on
* http://localhost:PORT then proxy the server via
* BrowserSync.
*/
gulp.task('server', function(){
// configure the server
var phpserve = new PhpServer({
base: path.join(__dirname, 'public'),
port: loriConfig.serverPort,
keepalive: true,
});
// start the server
phpserve.start();
});
/**
* ****************************************
* Sync Server
* ****************************************
* BrowserSync proxies our php server and
* starts a seperate server that syncs to
* our breowser.
*/
const syncServer = function() {
var syncServe = new SyncServer({
proxy: 'localhost:'+loriConfig.serverPort,
port: loriConfig.syncPort,
logLevel: 'silent'
},[
path.join(__dirname, 'public/assets/js/*'),
path.join(__dirname, 'public/assets/css/*')
]);
syncServe.start();
};
/**
* ****************************************
* Watch
* ****************************************
* Watch for changes on sass files defined
* in the sass watchlist
*/
const watch = function(){
// watch for changes in sass
gulp.watch(watchlist.sass, ["sass"]);
}
/**
* ****************************************
* Start
* ****************************************
* starts gulp task
*/
gulp.task('start', ['sass', 'server', 'webpack']);
/**
* ****************************************
* Default
* ****************************************
*/
gulp.task('default', function(){
console.log(' ');
console.log('AVAILABLE GULP COMMANDS');
console.log('-----------------------');
console.log('1. gulp start');
console.log('2. gulp sass');
console.log(' ');
});