]> git.agnieray.net Git - galette.git/blob - gulpfile.js
Add a watch task in gulpfile.js using Browsersync
[galette.git] / gulpfile.js
1 /*
2 * Set the URL of your local instance of Galette here.
3 * Then run "gulp serve".
4 * This is for local development purpose only.
5 * Don't commit this change in the repository.
6 */
7 const localServer = {
8 url: 'http://galette.localhost/'
9 }
10
11 var gulp = require('gulp'),
12 del = require('del'),
13 uglify = require('gulp-uglify'),
14 cleanCSS = require('gulp-clean-css'),
15 merge = require('merge-stream'),
16 concat = require('gulp-concat'),
17 replace = require('gulp-replace'),
18 browserSync = require('browser-sync').create(),
19 build = require('./semantic/tasks/build'),
20 buildJS = require('./semantic/tasks/build/javascript'),
21 buildCSS = require('./semantic/tasks/build/css'),
22 buildAssets = require('./semantic/tasks/build/assets')
23 ;
24
25 gulp.task('build ui', build);
26 gulp.task('build-css', buildCSS);
27 gulp.task('build-javascript', buildJS);
28 gulp.task('build-assets', buildAssets);
29
30 var paths = {
31 galette: {
32 modules: './node_modules/',
33 semantic: './semantic/',
34 ui: {
35 css: './galette/webroot/assets/ui/semantic.min.css',
36 js: './galette/webroot/assets/ui/semantic.min.js'
37 },
38 public: './galette/webroot/assets/'
39 },
40 css: {
41 main: [
42 './galette/webroot/themes/default/galette.css',
43 './node_modules/summernote/dist/summernote-lite.min.css'
44 ]
45 },
46 js: {
47 main: [
48 './node_modules/jquery/dist/jquery.js',
49 './node_modules/js-cookie/dist/js.cookie.min.js',
50 './node_modules/summernote/dist/summernote-lite.min.js',
51 './galette/webroot/js/common.js'
52 ],
53 chartjs: [
54 './node_modules/chart.js/dist/chart.min.js',
55 './node_modules/chartjs-plugin-autocolors/dist/chartjs-plugin-autocolors.min.js',
56 './node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.min.js'
57 ],
58 sortablejs: [
59 './node_modules/sortablejs/Sortable.min.js'
60 ]
61 },
62 extras: [
63 {
64 src: './node_modules/summernote/dist/font/*',
65 dest: '/webfonts/'
66 }, {
67 src: './node_modules/summernote/dist/lang/*.min.js',
68 dest: '/js/lang/'
69 }
70 ],
71 src: {
72 theme: './theme/themes/galette/**/*',
73 css: './galette/webroot/themes/**/*.css',
74 js: './galette/webroot/js/*.js'
75 }
76 };
77
78 function theme() {
79 var _dir = paths.galette.semantic + 'src/';
80 var _themes = paths.galette.semantic + 'src/themes/galette';
81
82 config = gulp.src([
83 './theme/theme.config'
84 ])
85 .pipe(gulp.dest(_dir))
86 .pipe(browserSync.stream());
87
88 theme = gulp.src([
89 './theme/themes/galette/*',
90 './theme/themes/galette/**/*.*'
91 ])
92 .pipe(gulp.dest(_themes))
93 .pipe(browserSync.stream());
94
95 return merge(config, theme);
96 }
97
98 function clean() {
99 return del([paths.galette.public]);
100 }
101
102 function styles() {
103 var _dir = paths.galette.public + '/css/';
104
105 main = gulp.src(paths.css.main)
106 .pipe(replace('url(images/', 'url(../images/'))
107 .pipe(replace('url(font/', 'url(../webfonts/'))
108 .pipe(cleanCSS())
109 .pipe(concat('galette-main.bundle.min.css'))
110 .pipe(gulp.dest(_dir))
111 .pipe(browserSync.stream());
112
113 return merge(main);
114 }
115
116 function scripts() {
117 var _dir = paths.galette.public + '/js/';
118
119 main = gulp.src(paths.js.main)
120 .pipe(concat('galette-main.bundle.min.js'))
121 .pipe(uglify())
122 .pipe(gulp.dest(_dir))
123 .pipe(browserSync.stream());
124
125 chartjs = gulp.src(paths.js.chartjs)
126 .pipe(concat('galette-chartjs.bundle.min.js'))
127 .pipe(gulp.dest(_dir))
128 .pipe(browserSync.stream());
129
130 sortablejs = gulp.src(paths.js.sortablejs)
131 .pipe(concat('galette-sortablejs.bundle.min.js'))
132 .pipe(gulp.dest(_dir))
133 .pipe(browserSync.stream());
134
135 return merge(main, chartjs, sortablejs);
136 }
137
138 function extras() {
139 main = paths.extras.map(function (extra) {
140 return gulp.src(extra.src)
141 .pipe(gulp.dest(paths.galette.public + extra.dest))
142 .pipe(browserSync.stream());
143 }
144 );
145
146 return merge(main);
147 }
148
149 function watch() {
150 browserSync.init({
151 proxy: localServer.url
152 })
153
154 gulp.watch([paths.src.theme], gulp.series(theme, 'build-css')).on('change', browserSync.reload)
155 gulp.watch([paths.src.css], gulp.series(styles)).on('change', browserSync.reload)
156 gulp.watch([paths.src.js], gulp.series(scripts)).on('change', browserSync.reload)
157 gulp.watch([paths.galette.ui.css, paths.galette.ui.js]).on('change', browserSync.reload)
158 }
159
160 exports.clean = clean;
161 exports.theme = theme;
162 exports.styles = styles;
163 exports.scripts = scripts;
164 exports.extras = extras;
165 exports.watch = watch;
166
167 var build = gulp.series(theme, clean, styles, scripts, extras, 'build ui');
168 exports.default = build;