]> git.agnieray.net Git - galette.git/blob - gulpfile.js
Fix gulpfile.js
[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 webroot: './galette/webroot/',
32 assets: {
33 public: './galette/webroot/assets/',
34 css: './galette/webroot/assets/css/',
35 js: './galette/webroot/assets/js/',
36 webfonts: './galette/webroot/assets/webfonts/',
37 theme: {
38 public: './galette/webroot/themes/default/',
39 css: './galette/webroot/themes/default/ui/semantic.min.css',
40 js: './galette/webroot/themes/default/ui/semantic.min.js',
41 images: './galette/webroot/themes/default/images/'
42 }
43 },
44 src: {
45 theme: './ui/semantic/galette/**/*',
46 config: './ui/semantic/theme*',
47 files: [
48 './ui/semantic/galette/*',
49 './ui/semantic/galette/**/*.*'
50 ],
51 css: './ui/css/**/*.css',
52 js: './ui/js/*.js',
53 favicon:'./ui/images/favicon.png',
54 logo: './ui/images/galette.png',
55 photo:'./ui/images/default.png'
56 },
57 semantic: {
58 src: './semantic/src/',
59 theme: './semantic/src/themes/galette/'
60 },
61 styles: {
62 main: [
63 './ui/css/galette.css',
64 './node_modules/summernote/dist/summernote-lite.min.css'
65 ]
66 },
67 scripts: {
68 main: [
69 './node_modules/jquery/dist/jquery.js',
70 './node_modules/js-cookie/dist/js.cookie.min.js',
71 './node_modules/summernote/dist/summernote-lite.min.js',
72 './ui/js/common.js'
73 ],
74 chartjs: [
75 './node_modules/chart.js/dist/chart.min.js',
76 './node_modules/chartjs-plugin-autocolors/dist/chartjs-plugin-autocolors.min.js',
77 './node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.min.js'
78 ],
79 sortablejs: [
80 './node_modules/sortablejs/Sortable.min.js'
81 ]
82 },
83 extras: [
84 {
85 src: './ui/css/galette_print.css',
86 dest: 'css/'
87 }, {
88 src: './ui/css/install.css',
89 dest: 'css/'
90 }, {
91 src: './ui/js/mass_changes.js',
92 dest: 'js/'
93 }, {
94 src: './node_modules/summernote/dist/font/*',
95 dest: 'webfonts/'
96 }, {
97 src: './node_modules/summernote/dist/lang/*.min.js',
98 dest: 'js/lang/'
99 }
100 ]
101 };
102
103 function galette() {
104 favicon = gulp.src(paths.src.favicon)
105 .pipe(gulp.dest(paths.assets.theme.images))
106 .pipe(browserSync.stream());
107
108 logo = gulp.src(paths.src.logo)
109 .pipe(gulp.dest(paths.assets.theme.images))
110 .pipe(browserSync.stream());
111
112 photo = gulp.src(paths.src.photo)
113 .pipe(gulp.dest(paths.assets.theme.images))
114 .pipe(browserSync.stream());
115
116 return merge(favicon, logo, photo);
117 }
118
119 function theme() {
120 config = gulp.src(paths.src.config)
121 .pipe(gulp.dest(paths.semantic.src))
122 .pipe(browserSync.stream());
123
124 theme = gulp.src(paths.src.files)
125 .pipe(gulp.dest(paths.semantic.theme))
126 .pipe(browserSync.stream());
127
128 return merge(config, theme);
129 }
130
131 function clean() {
132 return del([
133 paths.assets.public,
134 paths.assets.theme.public,
135 ]);
136 }
137
138 function styles() {
139 main = gulp.src(paths.styles.main)
140 .pipe(replace('url(font/', 'url(../webfonts/'))
141 .pipe(cleanCSS())
142 .pipe(concat('galette-main.bundle.min.css'))
143 .pipe(gulp.dest(paths.assets.css))
144 .pipe(browserSync.stream());
145
146 return merge(main);
147 }
148
149 function scripts() {
150 main = gulp.src(paths.scripts.main)
151 .pipe(concat('galette-main.bundle.min.js'))
152 .pipe(uglify())
153 .pipe(gulp.dest(paths.assets.js))
154 .pipe(browserSync.stream());
155
156 chartjs = gulp.src(paths.scripts.chartjs)
157 .pipe(concat('galette-chartjs.bundle.min.js'))
158 .pipe(gulp.dest(paths.assets.js))
159 .pipe(browserSync.stream());
160
161 sortablejs = gulp.src(paths.scripts.sortablejs)
162 .pipe(concat('galette-sortablejs.bundle.min.js'))
163 .pipe(gulp.dest(paths.assets.js))
164 .pipe(browserSync.stream());
165
166 return merge(main, chartjs, sortablejs);
167 }
168
169 function extras() {
170 main = paths.extras.map(function (extra) {
171 return gulp.src(extra.src)
172 .pipe(gulp.dest(paths.assets.public + extra.dest))
173 .pipe(browserSync.stream());
174 }
175 );
176
177 return merge(main);
178 }
179
180 function watch() {
181 browserSync.init({
182 proxy: localServer.url
183 })
184
185 gulp.watch([paths.src.favicon, paths.src.logo, paths.src.photo], gulp.series(galette)).on('change', browserSync.reload)
186 gulp.watch([paths.src.theme, paths.src.config], gulp.series(theme, 'build-css')).on('change', browserSync.reload)
187 gulp.watch([paths.src.css], gulp.series(styles)).on('change', browserSync.reload)
188 gulp.watch([paths.src.js], gulp.series(scripts)).on('change', browserSync.reload)
189 gulp.watch([paths.assets.theme.css, paths.assets.theme.js, paths.assets.theme.images]).on('change', browserSync.reload)
190 }
191
192 exports.galette = galette;
193 exports.theme = theme;
194 exports.clean = clean;
195 exports.styles = styles;
196 exports.scripts = scripts;
197 exports.extras = extras;
198 exports.watch = watch;
199
200 var build = gulp.series(theme, clean, styles, scripts, extras, 'build ui', galette);
201 exports.default = build;