]> git.agnieray.net Git - galette.git/blobdiff - gulpfile.js
Fix groups selection widget on member form
[galette.git] / gulpfile.js
index c478a51a211a4ee04091590b40a98b841107862a..0181184f154b5cf1eeeb9e0fe3a532fecf3ff7ca 100644 (file)
@@ -15,6 +15,7 @@ var gulp = require('gulp'),
   merge = require('merge-stream'),
   concat = require('gulp-concat'),
   replace = require('gulp-replace'),
+  download = require("gulp-download"),
   browserSync = require('browser-sync').create(),
   build = require('./semantic/tasks/build'),
   buildJS = require('./semantic/tasks/build/javascript'),
@@ -42,6 +43,7 @@ var paths = {
     }
   },
   src: {
+    semantic: './semantic.json',
     theme: './ui/semantic/galette/**/*',
     config: './ui/semantic/theme*',
     files: [
@@ -50,63 +52,71 @@ var paths = {
     ],
     css: './ui/css/**/*.css',
     js: './ui/js/*.js',
-    favicon:'./ui/images/favicon.ico',
-    faviconpng:'./ui/images/favicon.png',
+    favicon:'./ui/images/favicon.png',
     logo: './ui/images/galette.png',
-    photo:'./ui/images/default.png'
+    photo:'./ui/images/default.png',
+    emojis: './node_modules/twemoji-emojis/vendor/svg/*'
   },
   semantic: {
     src: './semantic/src/',
     theme: './semantic/src/themes/galette/'
   },
   styles: {
-    main: [
-      './ui/css/galette.css',
+    summernote: [
       './node_modules/summernote/dist/summernote-lite.min.css'
+    ],
+    codemirror: [
+      'https://cdnjs.cloudflare.com/ajax/libs/codemirror/3.20.0/codemirror.css'
     ]
   },
   scripts: {
     main: [
-      './node_modules/jquery/dist/jquery.js',
-      './node_modules/js-cookie/dist/js.cookie.min.js',
-      './node_modules/summernote/dist/summernote-lite.min.js',
+      './node_modules/js-cookie/dist/js.cookie.js',
       './ui/js/common.js'
     ],
+    masschanges: [
+      './ui/js/masschanges.js'
+    ],
     chartjs: [
-      './node_modules/chart.js/dist/chart.min.js',
+      './node_modules/chart.js/dist/chart.umd.js',
       './node_modules/chartjs-plugin-autocolors/dist/chartjs-plugin-autocolors.min.js',
       './node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.min.js'
     ],
     sortablejs: [
       './node_modules/sortablejs/Sortable.min.js'
+    ],
+    summernote: [
+      './node_modules/summernote/dist/summernote-lite.min.js'
+    ],
+    codemirror: [
+      'https://cdnjs.cloudflare.com/ajax/libs/codemirror/3.20.0/codemirror.js'
+    ],
+    codemirrorxml: [
+      'https://cdnjs.cloudflare.com/ajax/libs/codemirror/3.20.0/mode/xml/xml.js'
+    ],
+    codemirrorformatting: [
+      'https://cdnjs.cloudflare.com/ajax/libs/codemirror/2.36.0/formatting.js'
+    ],
+    darkreader: [
+      './node_modules/darkreader/darkreader.js'
     ]
   },
   extras: [
     {
-      src: './ui/css/galette_print.css',
-      dest: 'css/'
-    }, {
-      src: './ui/css/install.css',
-      dest: 'css/'
-    }, {
-      src: './ui/js/mass_changes.js',
-      dest: 'js/'
-    }, {
       src: './node_modules/summernote/dist/font/*',
       dest: 'webfonts/'
     }, {
       src: './node_modules/summernote/dist/lang/*.min.js',
       dest: 'js/lang/'
+    }, {
+      src: './node_modules/jquery/dist/jquery.min.js',
+      dest: 'js/'
     }
   ]
 };
 
 function galette() {
   favicon = gulp.src(paths.src.favicon)
-    .pipe(gulp.dest(paths.webroot))
-    .pipe(browserSync.stream());
-
-  faviconpng = gulp.src(paths.src.faviconpng)
     .pipe(gulp.dest(paths.assets.theme.images))
     .pipe(browserSync.stream());
 
@@ -130,7 +140,11 @@ function theme() {
     .pipe(gulp.dest(paths.semantic.theme))
     .pipe(browserSync.stream());
 
-  return merge(config, theme);
+  emojis = gulp.src(paths.src.emojis)
+    .pipe(gulp.dest(paths.semantic.theme + 'assets/emojis'))
+    .pipe(browserSync.stream());
+
+  return merge(config, theme, emojis);
 }
 
 function clean() {
@@ -141,45 +155,94 @@ function clean() {
 }
 
 function styles() {
-  main = gulp.src(paths.styles.main)
+  summernote = gulp.src(paths.styles.summernote)
     .pipe(replace('url(font/', 'url(../webfonts/'))
     .pipe(cleanCSS())
-    .pipe(concat('galette-main.bundle.min.css'))
+    .pipe(concat('summernote.min.css'))
     .pipe(gulp.dest(paths.assets.css))
     .pipe(browserSync.stream());
 
-  return merge(main);
+  codemirror = download(paths.styles.codemirror)
+    .pipe(concat('codemirror.css'))
+    .pipe(gulp.dest(paths.assets.css))
+    .pipe(browserSync.stream());
+
+  return merge(summernote, codemirror);
 }
 
 function scripts() {
   main = gulp.src(paths.scripts.main)
     .pipe(concat('galette-main.bundle.min.js'))
-    .pipe(uglify())
+    .pipe(uglify({
+      output: {
+        comments: /^!/
+      }
+    }))
+    .pipe(gulp.dest(paths.assets.js))
+    .pipe(browserSync.stream());
+
+  masschanges = gulp.src(paths.scripts.masschanges)
+    .pipe(concat('masschanges.min.js'))
+    .pipe(uglify({
+      output: {
+        comments: /^!/
+      }
+    }))
     .pipe(gulp.dest(paths.assets.js))
     .pipe(browserSync.stream());
 
   chartjs = gulp.src(paths.scripts.chartjs)
-    .pipe(concat('galette-chartjs.bundle.min.js'))
+    .pipe(concat('chartjs.min.js'))
     .pipe(gulp.dest(paths.assets.js))
     .pipe(browserSync.stream());
 
   sortablejs = gulp.src(paths.scripts.sortablejs)
-    .pipe(concat('galette-sortablejs.bundle.min.js'))
+    .pipe(concat('sortable.min.js'))
+    .pipe(gulp.dest(paths.assets.js))
+    .pipe(browserSync.stream());
+
+  summernote = gulp.src(paths.scripts.summernote)
+    .pipe(concat('summernote.min.js'))
+    .pipe(gulp.dest(paths.assets.js))
+    .pipe(browserSync.stream());
+
+  codemirror = download(paths.scripts.codemirror)
+    .pipe(concat('codemirror.js'))
+    .pipe(gulp.dest(paths.assets.js))
+    .pipe(browserSync.stream());
+
+  codemirrorxml = download(paths.scripts.codemirrorxml)
+    .pipe(concat('xml.js'))
+    .pipe(gulp.dest(paths.assets.js))
+    .pipe(browserSync.stream());
+
+  codemirrorformatting = download(paths.scripts.codemirrorformatting)
+    .pipe(concat('formatting.js'))
+    .pipe(gulp.dest(paths.assets.js))
+    .pipe(browserSync.stream());
+
+  darkreader = gulp.src(paths.scripts.darkreader)
+    .pipe(concat('darkreader.min.js'))
+    .pipe(uglify({
+      output: {
+        comments: /^!/
+      }
+    }))
     .pipe(gulp.dest(paths.assets.js))
     .pipe(browserSync.stream());
 
-  return merge(main, chartjs, sortablejs);
+  return merge(main, masschanges, chartjs, sortablejs, summernote, codemirror, codemirrorxml, codemirrorformatting, darkreader);
 }
 
-function extras() {
-  main = paths.extras.map(function (extra) {
+function movefiles() {
+  extras = paths.extras.map(function (extra) {
     return gulp.src(extra.src)
       .pipe(gulp.dest(paths.assets.public + extra.dest))
       .pipe(browserSync.stream());
     }
   );
 
-  return merge(main);
+  return merge(extras);
 }
 
 function watch() {
@@ -187,7 +250,8 @@ function watch() {
     proxy: localServer.url
   })
 
-  gulp.watch([paths.src.favicon, paths.src.faviconpng, paths.src.logo, paths.src.photo], gulp.series(galette)).on('change', browserSync.reload)
+  gulp.watch([paths.src.favicon, paths.src.logo, paths.src.photo], gulp.series(galette)).on('change', browserSync.reload)
+  gulp.watch([paths.src.semantic], gulp.series(theme, 'build ui')).on('change', browserSync.reload)
   gulp.watch([paths.src.theme, paths.src.config], gulp.series(theme, 'build-css')).on('change', browserSync.reload)
   gulp.watch([paths.src.css], gulp.series(styles)).on('change', browserSync.reload)
   gulp.watch([paths.src.js], gulp.series(scripts)).on('change', browserSync.reload)
@@ -199,8 +263,8 @@ exports.theme = theme;
 exports.clean = clean;
 exports.styles = styles;
 exports.scripts = scripts;
-exports.extras = extras;
+exports.movefiles = movefiles;
 exports.watch = watch;
 
-var build = gulp.series(theme, clean, styles, scripts, extras, 'build ui', galette);
+var build = gulp.series(theme, clean, styles, scripts, movefiles, 'build ui', galette);
 exports.default = build;