Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added assets/src/fonts/.gitkeep
Empty file.
141 changes: 71 additions & 70 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,24 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
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');

// 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');
Expand All @@ -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 = {
Expand Down Expand Up @@ -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 = [
Expand Down Expand Up @@ -138,12 +148,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',
])
Expand All @@ -160,7 +170,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
Expand Down Expand Up @@ -207,7 +217,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}',
])
Expand All @@ -229,17 +239,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);
}


Expand All @@ -250,27 +260,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',
Expand Down Expand Up @@ -306,7 +316,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
Expand All @@ -317,9 +327,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
Expand All @@ -342,7 +351,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);
Expand All @@ -351,7 +360,7 @@ 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));
}
Expand Down Expand Up @@ -381,7 +390,7 @@ function ckeditor() {
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'));
}
Expand Down Expand Up @@ -419,44 +428,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'
})))
Expand All @@ -468,9 +476,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 () {
Expand Down Expand Up @@ -542,7 +550,7 @@ 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', {});
Expand Down Expand Up @@ -610,25 +618,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
Expand Down
32 changes: 16 additions & 16 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -62,28 +62,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",
Expand Down