]> git.agnieray.net Git - galette.git/blob - gulpfile.js
Fix batch actions JS for group managers; fixes #1702 (#306)
[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 download = require("gulp-download"),
19 browserSync = require('browser-sync').create(),
20 build = require('./semantic/tasks/build'),
21 buildJS = require('./semantic/tasks/build/javascript'),
22 buildCSS = require('./semantic/tasks/build/css'),
23 buildAssets = require('./semantic/tasks/build/assets')
24 ;
25
26 gulp.task('build ui', build);
27 gulp.task('build-css', buildCSS);
28 gulp.task('build-javascript', buildJS);
29 gulp.task('build-assets', buildAssets);
30
31 var paths = {
32 webroot: './galette/webroot/',
33 assets: {
34 public: './galette/webroot/assets/',
35 css: './galette/webroot/assets/css/',
36 js: './galette/webroot/assets/js/',
37 webfonts: './galette/webroot/assets/webfonts/',
38 theme: {
39 public: './galette/webroot/themes/default/',
40 css: './galette/webroot/themes/default/ui/semantic.min.css',
41 js: './galette/webroot/themes/default/ui/semantic.min.js',
42 images: './galette/webroot/themes/default/images/'
43 }
44 },
45 src: {
46 semantic: './semantic.json',
47 theme: './ui/semantic/galette/**/*',
48 config: './ui/semantic/theme*',
49 files: [
50 './ui/semantic/galette/*',
51 './ui/semantic/galette/**/*.*'
52 ],
53 css: './ui/css/**/*.css',
54 js: './ui/js/*.js',
55 favicon:'./ui/images/favicon.png',
56 logo: './ui/images/galette.png',
57 photo:'./ui/images/default.png',
58 emojis: './node_modules/twemoji-emojis/vendor/svg/*'
59 },
60 semantic: {
61 src: './semantic/src/',
62 theme: './semantic/src/themes/galette/'
63 },
64 styles: {
65 summernote: [
66 './node_modules/summernote/dist/summernote-lite.min.css'
67 ],
68 codemirror: [
69 'https://cdnjs.cloudflare.com/ajax/libs/codemirror/3.20.0/codemirror.css'
70 ]
71 },
72 scripts: {
73 main: [
74 './node_modules/js-cookie/dist/js.cookie.js',
75 './ui/js/common.js'
76 ],
77 masschanges: [
78 './ui/js/masschanges.js'
79 ],
80 chartjs: [
81 './node_modules/chart.js/dist/chart.min.js',
82 './node_modules/chartjs-plugin-autocolors/dist/chartjs-plugin-autocolors.min.js',
83 './node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.min.js'
84 ],
85 sortablejs: [
86 './node_modules/sortablejs/Sortable.min.js'
87 ],
88 summernote: [
89 './node_modules/summernote/dist/summernote-lite.min.js'
90 ],
91 codemirror: [
92 'https://cdnjs.cloudflare.com/ajax/libs/codemirror/3.20.0/codemirror.js'
93 ],
94 codemirrorxml: [
95 'https://cdnjs.cloudflare.com/ajax/libs/codemirror/3.20.0/mode/xml/xml.js'
96 ],
97 codemirrorformatting: [
98 'https://cdnjs.cloudflare.com/ajax/libs/codemirror/2.36.0/formatting.js'
99 ]
100 },
101 extras: [
102 {
103 src: './node_modules/summernote/dist/font/*',
104 dest: 'webfonts/'
105 }, {
106 src: './node_modules/summernote/dist/lang/*.min.js',
107 dest: 'js/lang/'
108 }, {
109 src: './node_modules/jquery/dist/jquery.min.js',
110 dest: 'js/'
111 }
112 ]
113 };
114
115 function galette() {
116 favicon = gulp.src(paths.src.favicon)
117 .pipe(gulp.dest(paths.assets.theme.images))
118 .pipe(browserSync.stream());
119
120 logo = gulp.src(paths.src.logo)
121 .pipe(gulp.dest(paths.assets.theme.images))
122 .pipe(browserSync.stream());
123
124 photo = gulp.src(paths.src.photo)
125 .pipe(gulp.dest(paths.assets.theme.images))
126 .pipe(browserSync.stream());
127
128 return merge(favicon, logo, photo);
129 }
130
131 function theme() {
132 config = gulp.src(paths.src.config)
133 .pipe(gulp.dest(paths.semantic.src))
134 .pipe(browserSync.stream());
135
136 theme = gulp.src(paths.src.files)
137 .pipe(gulp.dest(paths.semantic.theme))
138 .pipe(browserSync.stream());
139
140 emojis = gulp.src(paths.src.emojis)
141 .pipe(gulp.dest(paths.semantic.theme + 'assets/emojis'))
142 .pipe(browserSync.stream());
143
144 return merge(config, theme, emojis);
145 }
146
147 function clean() {
148 return del([
149 paths.assets.public,
150 paths.assets.theme.public,
151 ]);
152 }
153
154 function styles() {
155 summernote = gulp.src(paths.styles.summernote)
156 .pipe(replace('url(font/', 'url(../webfonts/'))
157 .pipe(cleanCSS())
158 .pipe(concat('summernote.min.css'))
159 .pipe(gulp.dest(paths.assets.css))
160 .pipe(browserSync.stream());
161
162 codemirror = download(paths.styles.codemirror)
163 .pipe(concat('codemirror.css'))
164 .pipe(gulp.dest(paths.assets.css))
165 .pipe(browserSync.stream());
166
167 return merge(summernote, codemirror);
168 }
169
170 function scripts() {
171 main = gulp.src(paths.scripts.main)
172 .pipe(concat('galette-main.bundle.min.js'))
173 .pipe(uglify({
174 output: {
175 comments: /^!/
176 }
177 }))
178 .pipe(gulp.dest(paths.assets.js))
179 .pipe(browserSync.stream());
180
181 masschanges = gulp.src(paths.scripts.masschanges)
182 .pipe(concat('masschanges.min.js'))
183 .pipe(uglify({
184 output: {
185 comments: /^!/
186 }
187 }))
188 .pipe(gulp.dest(paths.assets.js))
189 .pipe(browserSync.stream());
190
191 chartjs = gulp.src(paths.scripts.chartjs)
192 .pipe(concat('chartjs.min.js'))
193 .pipe(gulp.dest(paths.assets.js))
194 .pipe(browserSync.stream());
195
196 sortablejs = gulp.src(paths.scripts.sortablejs)
197 .pipe(concat('sortable.min.js'))
198 .pipe(gulp.dest(paths.assets.js))
199 .pipe(browserSync.stream());
200
201 summernote = gulp.src(paths.scripts.summernote)
202 .pipe(concat('summernote.min.js'))
203 .pipe(gulp.dest(paths.assets.js))
204 .pipe(browserSync.stream());
205
206 codemirror = download(paths.scripts.codemirror)
207 .pipe(concat('codemirror.js'))
208 .pipe(gulp.dest(paths.assets.js))
209 .pipe(browserSync.stream());
210
211 codemirrorxml = download(paths.scripts.codemirrorxml)
212 .pipe(concat('xml.js'))
213 .pipe(gulp.dest(paths.assets.js))
214 .pipe(browserSync.stream());
215
216 codemirrorformatting = download(paths.scripts.codemirrorformatting)
217 .pipe(concat('formatting.js'))
218 .pipe(gulp.dest(paths.assets.js))
219 .pipe(browserSync.stream());
220
221 return merge(main, masschanges, chartjs, sortablejs, summernote, codemirror, codemirrorxml, codemirrorformatting);
222 }
223
224 function movefiles() {
225 extras = paths.extras.map(function (extra) {
226 return gulp.src(extra.src)
227 .pipe(gulp.dest(paths.assets.public + extra.dest))
228 .pipe(browserSync.stream());
229 }
230 );
231
232 return merge(extras);
233 }
234
235 function watch() {
236 browserSync.init({
237 proxy: localServer.url
238 })
239
240 gulp.watch([paths.src.favicon, paths.src.logo, paths.src.photo], gulp.series(galette)).on('change', browserSync.reload)
241 gulp.watch([paths.src.semantic], gulp.series(theme, 'build ui')).on('change', browserSync.reload)
242 gulp.watch([paths.src.theme, paths.src.config], gulp.series(theme, 'build-css')).on('change', browserSync.reload)
243 gulp.watch([paths.src.css], gulp.series(styles)).on('change', browserSync.reload)
244 gulp.watch([paths.src.js], gulp.series(scripts)).on('change', browserSync.reload)
245 gulp.watch([paths.assets.theme.css, paths.assets.theme.js, paths.assets.theme.images]).on('change', browserSync.reload)
246 }
247
248 exports.galette = galette;
249 exports.theme = theme;
250 exports.clean = clean;
251 exports.styles = styles;
252 exports.scripts = scripts;
253 exports.movefiles = movefiles;
254 exports.watch = watch;
255
256 var build = gulp.series(theme, clean, styles, scripts, movefiles, 'build ui', galette);
257 exports.default = build;