From 33508106c4a1350b5c2510d8a99920c1162a0dd2 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Sat, 11 Jan 2025 17:28:41 +0100 Subject: [PATCH] Update gulp and related libraries --- assets/src/fonts/.gitkeep | 0 gulpfile.js | 162 +++++++++++++++++++------------------- package.json | 32 ++++---- 3 files changed, 97 insertions(+), 97 deletions(-) create mode 100644 assets/src/fonts/.gitkeep diff --git a/assets/src/fonts/.gitkeep b/assets/src/fonts/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/gulpfile.js b/gulpfile.js index edb2ffe534..b8db1d187f 100755 --- a/gulpfile.js +++ b/gulpfile.js @@ -15,10 +15,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ +import { createRequire } from 'module'; +const require = createRequire(import.meta.url); // Librerie NPM richieste per l'esecuzione -const gulp = require('gulp'); -const merge = require('merge-stream'); +import gulp from 'gulp'; const del = require('del'); const gulpIf = require('gulp-if'); const babel = require('gulp-babel'); @@ -26,13 +27,12 @@ const babel = require('gulp-babel'); // Minificatori const minifyJS = require('gulp-uglify'); const minifyCSS = require('gulp-clean-css'); -const minifyJSON = require('gulp-json-minify'); +import autoprefixer from 'gulp-autoprefixer'; // Interpretatori CSS const sass = require('gulp-sass')(require('sass')); const less = require('gulp-less'); const stylus = require('gulp-stylus'); -const autoprefixer = require('gulp-autoprefixer'); // Concatenatore const concat = require('gulp-concat'); @@ -42,13 +42,13 @@ const flatten = require('gulp-flatten'); const rename = require('gulp-rename'); // Release -const glob = require('globby'); const md5File = require('md5-file') -const fs = require('fs'); const archiver = require('archiver'); const shell = require('shelljs'); -const inquirer = require('inquirer'); -const { Readable } = require('node:stream'); +const { Readable } = require('stream'); +import * as fs from 'fs'; +import inquirer from 'inquirer'; +import { globby as glob } from 'globby'; // Configurazione const config = { @@ -78,6 +78,16 @@ const config = { }; config.babelOptions.compact = !config.debug; +function waitPipes(pipes, done) { + return Promise.all( + pipes.map(pipe => new Promise((resolve, reject) => { + pipe.on('end', resolve) + })) + ).then(function () { + done(); + }); +} + // Elaborazione e minificazione di JS const JS = gulp.parallel(() => { const vendor = [ @@ -139,12 +149,12 @@ const JS = gulp.parallel(() => { }) .pipe(babel(config.babelOptions)) .pipe(concat('app.min.js')) - .pipe(gulpIf(!config.debug, minifyJS({compress:false}))) + .pipe(gulpIf(!config.debug, minifyJS({ compress: false }))) .pipe(gulp.dest(config.production + '/' + config.paths.js)); }, srcJS); // Elaborazione e minificazione di JS personalizzati -function srcJS() { +export function srcJS(done) { const js = gulp.src([ config.development + '/' + config.paths.js + '/base/*.js', ]) @@ -161,7 +171,7 @@ function srcJS() { .pipe(gulpIf(!config.debug, minifyJS())) .pipe(gulp.dest(config.production + '/' + config.paths.js)); - return merge(js, functions); + return waitPipes([js, functions], done); } // Elaborazione e minificazione di CSS @@ -208,7 +218,7 @@ const CSS = gulp.parallel(() => { }, srcCSS); // Elaborazione e minificazione di CSS personalizzati -function srcCSS() { +export function srcCSS(done) { const css = gulp.src([ config.development + '/' + config.paths.css + '/*.{css,scss,less,styl}', ]) @@ -230,17 +240,17 @@ function srcCSS() { .pipe(gulp.dest(config.production + '/' + config.paths.css)); const themes = gulp.src([ - config.development + '/' + config.paths.css + '/themes/*.{css,scss,less,styl}', - config.nodeDirectory + '/admin-lte/dist/css/adminlte.min.css', - ]) - .pipe(gulpIf('*.scss', sass(), gulpIf('*.less', less(), gulpIf('*.styl', stylus())))) - .pipe(autoprefixer()) - .pipe(gulpIf(!config.debug, minifyCSS(config.minifiers.css))) - .pipe(concat('themes.min.css')) - .pipe(flatten()) - .pipe(gulp.dest(config.production + '/' + config.paths.css)); - - return merge(css, print, themes); + config.development + '/' + config.paths.css + '/themes/*.{css,scss,less,styl}', + config.nodeDirectory + '/admin-lte/dist/css/adminlte.min.css', + ]) + .pipe(gulpIf('*.scss', sass(), gulpIf('*.less', less(), gulpIf('*.styl', stylus())))) + .pipe(autoprefixer()) + .pipe(gulpIf(!config.debug, minifyCSS(config.minifiers.css))) + .pipe(concat('themes.min.css')) + .pipe(flatten()) + .pipe(gulp.dest(config.production + '/' + config.paths.css)); + + return waitPipes([css, print, themes], done); } @@ -251,27 +261,27 @@ const images = srcImages; function srcImages() { return gulp.src([ config.development + '/' + config.paths.images + '/**/*.{jpg,png,jpeg,gif}', - ]) + ], {encoding: false}) .pipe(gulp.dest(config.production + '/' + config.paths.images)); } -function leaflet() { - gulp.src([ +function leaflet(done) { + const leaflet = gulp.src([ config.nodeDirectory + '/leaflet.fullscreen/icon-fullscreen.svg', - ]).pipe(gulp.dest(config.production + '/' + config.paths.images + '/leaflet')); - - gulp.src([ config.development + '/' + config.paths.images + '/leaflet/*', - ]).pipe(gulp.dest(config.production + '/' + config.paths.images + '/leaflet')); + ], {encoding: false}) + .pipe(gulp.dest(config.production + '/' + config.paths.images + '/leaflet')); - return gulp.src([ + const images = gulp.src([ config.nodeDirectory + '/leaflet/dist/images/*.{jpg,png,jpeg}', - ]) + ], {encoding: false}) .pipe(flatten()) .pipe(gulp.dest(config.production + '/' + config.paths.images + '/leaflet')); + + return waitPipes([images, leaflet], done); } -function wacom(){ +function wacom(done) { // Librerie da node_modules secondo package.json const vendor = [ 'clipper-lib/clipper.js', @@ -307,7 +317,7 @@ function wacom(){ // Prima copiamo il file WASM necessario const wasmStream = gulp.src([ config.development + '/' + config.paths.js + '/wacom/common/libs/signature_sdk.wasm' - ]) + ], {encoding: false}) .pipe(gulp.dest(config.production + '/' + config.paths.js + '/wacom/')); // Poi processiamo i file JS che lo utilizzano @@ -318,9 +328,8 @@ function wacom(){ .pipe(concat('wacom.min.js')) .pipe(gulpIf(!config.debug, minifyJS())) .pipe(gulp.dest(config.production + '/' + config.paths.js)); - - // Usiamo merge per garantire che wasmStream sia completato prima di jsStream - return merge(wasmStream, jsStream); + + return waitPipes([jsStream, wasmStream], done); } // Elaborazione dei fonts @@ -343,7 +352,7 @@ const fonts = gulp.parallel(() => { vendor[i] = config.nodeDirectory + '/' + vendor[i]; } - return gulp.src(vendor) + return gulp.src(vendor, {encoding: false}) .pipe(flatten()) .pipe(gulp.dest(config.production + '/' + config.paths.fonts)); }, srcFonts); @@ -352,32 +361,31 @@ const fonts = gulp.parallel(() => { function srcFonts() { return gulp.src([ config.development + '/' + config.paths.fonts + '/**/*.{otf,eot,svg,ttf,woff,woff2}', - ]) + ], {encoding: false}) .pipe(flatten()) .pipe(gulp.dest(config.production + '/' + config.paths.fonts)); } -function ckeditor() { - - const ckeditor = gulp.src([ - config.nodeDirectory + '/ckeditor4/{adapters,lang,skins,plugins,core}/**/*.{js,json,css,png,gif,html}', - config.nodeDirectory + '/ckeditor4/*.{js,css}', - ]) +function ckeditor(done) { + const ckeditor = gulp.src([ + config.nodeDirectory + '/ckeditor4-full/{adapters,lang,skins,plugins,core}/**/*.{js,json,css,png,gif,html}', + config.nodeDirectory + '/ckeditor4-full/*.{js,css}', + ], {encoding: false}) .pipe(gulp.dest(config.production + '/' + config.paths.js + '/ckeditor')); const plugins = gulp.src([ - config.nodeDirectory + '/ckeditor/plugins/{emoji,autocomplete,textmatch,textwatcher}/**/*.{js,json,css,png,gif,html}', - config.nodeDirectory + '/ckeditor-image-to-base/*.{js,json,css,png,gif,html}', - ]) + config.nodeDirectory + '/ckeditor4/plugins/{emoji,autocomplete,textmatch,textwatcher}/**/*.{js,json,css,png,gif,html}', + //config.nodeDirectory + '/ckeditor-image-to-base/*.{js,json,css,png,gif,html}', + ], {encoding: false}) .pipe(gulp.dest(config.production + '/' + config.paths.js + '/ckeditor/plugins')); - return merge(ckeditor, plugins); + return waitPipes([ckeditor, plugins], done); } function colorpicker() { return gulp.src([ config.nodeDirectory + '/bootstrap-colorpicker/dist/**/*.{jpg,png,jpeg}', - ]) + ], {encoding: false}) .pipe(flatten()) .pipe(gulp.dest(config.production + '/' + config.paths.images + '/bootstrap-colorpicker')); } @@ -415,44 +423,43 @@ function csrf() { .pipe(gulp.dest(config.production + '/' + config.paths.js + '/csrf')); } -function pdfjs() { +function pdfjs(done) { const web = gulp.src([ - config.nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-4.0.379-dist/web/**/*', - '!' + config.nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-4.0.379-dist/web/cmaps/*', - '!' + config.nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-4.0.379-dist/web/*.map', - '!' + config.nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-4.0.379-dist/web/*.pdf', - ]) + config.nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-*-dist/web/**/*', + '!' + config.nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-*-dist/web/cmaps/*', + '!' + config.nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-*-dist/web/*.map', + '!' + config.nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-*-dist/web/*.pdf', + ], {encoding: false}) .pipe(gulp.dest(config.production + '/pdfjs/web')); const build = gulp.src([ - config.nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-4.0.379-dist/build/*', - '!' + config.nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-4.0.379-dist/build/*.map', - ]) + config.nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-*-dist/build/*', + '!' + config.nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-*-dist/build/*.map', + ], {encoding: false}) .pipe(gulp.dest(config.production + '/pdfjs/build')); - return merge(web, build); + return waitPipes([web, build], done); } function uaparser() { return gulp.src([ config.nodeDirectory + '/ua-parser-js/dist/icons/mono/**/*', '!' + config.nodeDirectory + '/ua-parser-js/dist/icons/mono/LICENSE.md', - ]) - .pipe(gulp.dest(config.production + '/img/icons/')); + ], {encoding: false}) + .pipe(gulp.dest(config.production + '/' + config.paths.images + '/icons/')); } // Elaborazione e minificazione delle informazioni sull'internazionalizzazione function i18n() { return gulp.src([ config.nodeDirectory + '/**/{i18n,lang,locale,locales}/*.{js,json}', - config.development + '/' + config.paths.js + '/i18n/**/*.{js,json}', + //config.development + '/' + config.paths.js + '/i18n/**/*.{js,json}', config.nodeDirectory + '/moment/min/locales.js', '!' + config.nodeDirectory + '/**/{src,plugins}/**', - '!' + config.nodeDirectory + '/ckeditor4/**', - '!' + config.nodeDirectory + '/summernote/**', + '!' + config.nodeDirectory + '/ckeditor4-full/**', + //'!' + config.nodeDirectory + '/summernote/**', '!' + config.nodeDirectory + '/jquery-ui/**', ]) - //.pipe(gulpIf('*.js', minifyJS(), gulpIf('*.json', minifyJSON()))) .pipe(gulpIf('!*.min.*', rename({ suffix: '.min' }))) @@ -464,9 +471,9 @@ function i18n() { // Operazioni per la release -function release(done) { +export function release(done) { // Impostazione dello zip - let output = fs.createWriteStream('./release.zip', {flags: 'w'}); + let output = fs.createWriteStream('./release.zip', { flags: 'w' }); let archive = archiver('zip'); output.on('close', function () { @@ -538,14 +545,14 @@ function release(done) { archive.file('logs/.htaccess', {}); // Aggiunta del file dei checksum - let checksumFile = fs.createWriteStream('./checksum.json', {flags: 'w'}); + let checksumFile = fs.createWriteStream('./checksum.json', { flags: 'w' }); checksumFile.write(JSON.stringify(checksum)); checksumFile.close(); archive.file('checksum.json', {}); // Aggiunta del file per il controllo di integrità del database var bufferStream = new Readable(); - + bufferStream.push(shell.exec('php update/structure.php', { silent: true }).stdout); @@ -606,25 +613,18 @@ function release(done) { }).catch(err => { console.error('Si è verificato un errore:', err); }); - }); } // Pulizia -function clean() { +export function clean() { return del([config.production]); -} +}; // Operazioni di default per la generazione degli assets -const bower = gulp.series(clean, gulp.parallel(JS, CSS, images, fonts, ckeditor, colorpicker, i18n, pdfjs, uaparser, hotkeys, chartjs, password_strength, csrf, leaflet, wacom)); - -// Debug su CSS e JS -exports.srcJS = srcJS; -exports.srcCSS = srcCSS; +export const bower = gulp.series(clean, gulp.parallel(JS, CSS, images, fonts, ckeditor, colorpicker, i18n, pdfjs, hotkeys, chartjs, password_strength, csrf, leaflet, wacom, uaparser)); -exports.bower = bower; -exports.release = release; -exports.default = bower; +export default bower; // Watch task - lanciato con `gulp watch`, resta in attesa e ogni volta che viene modificato un asset in src // viene aggiornata la dist diff --git a/package.json b/package.json index b570a3cc4c..ae8b2e1313 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,8 @@ "bootstrap-daterangepicker": "^2.1.25", "bootstrap-maxlength": "^1.10.1", "chart.js": "^3.8.0", - "ckeditor": "4.12.1", - "ckeditor4": "ckeditor/ckeditor4-releases#full/4.22.1", + "ckeditor4": "4.22.1", + "ckeditor4-full": "ckeditor/ckeditor4-releases#full/4.22.1", "clipper-lib": "^6.4.2", "components-jqueryui": "^1.12.1", "datatables.net-bs": "^1.10.15", @@ -63,28 +63,28 @@ "devDependencies": { "@babel/core": "^7.11.1", "@babel/preset-env": "^7.11.0", - "archiver": "^3.0.0", + "archiver": "^7.0.0", "cwd": "^0.10.0", - "del": "^4.0.0", - "globby": "^11.0.1", - "gulp": "^4.0.2", - "gulp-autoprefixer": "^7.0.0", + "del": "^6.0.0", + "globby": "^14.0.1", + "gulp": "^5.0.0", + "gulp-autoprefixer": "^9.0.0", "gulp-babel": "^8.0.0", "gulp-clean-css": "^4.0.0", "gulp-concat": "^2.6.0", - "gulp-debug": "^4.0.0", + "gulp-debug": "^5.0.0", "gulp-flatten": "^0.4.0", - "gulp-if": "^2.0.2", - "gulp-json-minify": "^1.0.5", - "gulp-less": "^4.0.1", - "gulp-rename": "^1.4.0", - "gulp-sass": "^5.1.0", - "gulp-stylus": "^2.6.0", + "gulp-if": "^3.0.0", + "gulp-less": "^5.0.0", + "gulp-rename": "^2.0.0", + "gulp-sass": "^6.0.0", + "gulp-stylus": "^3.0.0", "gulp-uglify": "^3.0.2", - "inquirer": "^4.0.1", + "inquirer": "^12.3.0", + "main-bower-files": "^2.13.1", "md5-file": "^5.0.0", "sass": "^1.62.1", - "shelljs": ">=0.8.5" + "shelljs": "^0.8.5" }, "scripts": { "gulp": "gulp",