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