1515 * You should have received a copy of the GNU General Public License
1616 * along with this program. If not, see <https://www.gnu.org/licenses/>.
1717 */
18+ import { createRequire } from 'module' ;
19+ const require = createRequire ( import . meta. url ) ;
1820
1921// Librerie NPM richieste per l'esecuzione
20- const gulp = require ( 'gulp' ) ;
21- const merge = require ( 'merge-stream' ) ;
22+ import gulp from 'gulp' ;
2223const del = require ( 'del' ) ;
2324const gulpIf = require ( 'gulp-if' ) ;
2425const babel = require ( 'gulp-babel' ) ;
2526
2627// Minificatori
2728const minifyJS = require ( 'gulp-uglify' ) ;
2829const minifyCSS = require ( 'gulp-clean-css' ) ;
29- const minifyJSON = require ( 'gulp-json-minify' ) ;
30+ import autoprefixer from 'gulp-autoprefixer' ;
3031
3132// Interpretatori CSS
3233const sass = require ( 'gulp-sass' ) ( require ( 'sass' ) ) ;
3334const less = require ( 'gulp-less' ) ;
3435const stylus = require ( 'gulp-stylus' ) ;
35- const autoprefixer = require ( 'gulp-autoprefixer' ) ;
3636
3737// Concatenatore
3838const concat = require ( 'gulp-concat' ) ;
@@ -42,13 +42,13 @@ const flatten = require('gulp-flatten');
4242const rename = require ( 'gulp-rename' ) ;
4343
4444// Release
45- const glob = require ( 'globby' ) ;
4645const md5File = require ( 'md5-file' )
47- const fs = require ( 'fs' ) ;
4846const archiver = require ( 'archiver' ) ;
4947const shell = require ( 'shelljs' ) ;
50- const inquirer = require ( 'inquirer' ) ;
5148const { Readable } = require ( 'stream' ) ;
49+ import * as fs from 'fs' ;
50+ import inquirer from 'inquirer' ;
51+ import { globby as glob } from 'globby' ;
5252
5353// Configurazione
5454const config = {
@@ -78,6 +78,16 @@ const config = {
7878} ;
7979config . babelOptions . compact = ! config . debug ;
8080
81+ function waitPipes ( pipes , done ) {
82+ return Promise . all (
83+ pipes . map ( pipe => new Promise ( ( resolve , reject ) => {
84+ pipe . on ( 'end' , resolve )
85+ } ) )
86+ ) . then ( function ( ) {
87+ done ( ) ;
88+ } ) ;
89+ }
90+
8191// Elaborazione e minificazione di JS
8292const JS = gulp . parallel ( ( ) => {
8393 const vendor = [
@@ -139,12 +149,12 @@ const JS = gulp.parallel(() => {
139149 } )
140150 . pipe ( babel ( config . babelOptions ) )
141151 . pipe ( concat ( 'app.min.js' ) )
142- . pipe ( gulpIf ( ! config . debug , minifyJS ( { compress :false } ) ) )
152+ . pipe ( gulpIf ( ! config . debug , minifyJS ( { compress : false } ) ) )
143153 . pipe ( gulp . dest ( config . production + '/' + config . paths . js ) ) ;
144154} , srcJS ) ;
145155
146156// Elaborazione e minificazione di JS personalizzati
147- function srcJS ( ) {
157+ export function srcJS ( done ) {
148158 const js = gulp . src ( [
149159 config . development + '/' + config . paths . js + '/base/*.js' ,
150160 ] )
@@ -161,7 +171,7 @@ function srcJS() {
161171 . pipe ( gulpIf ( ! config . debug , minifyJS ( ) ) )
162172 . pipe ( gulp . dest ( config . production + '/' + config . paths . js ) ) ;
163173
164- return merge ( js , functions ) ;
174+ return waitPipes ( [ js , functions ] , done ) ;
165175}
166176
167177// Elaborazione e minificazione di CSS
@@ -208,7 +218,7 @@ const CSS = gulp.parallel(() => {
208218} , srcCSS ) ;
209219
210220// Elaborazione e minificazione di CSS personalizzati
211- function srcCSS ( ) {
221+ export function srcCSS ( done ) {
212222 const css = gulp . src ( [
213223 config . development + '/' + config . paths . css + '/*.{css,scss,less,styl}' ,
214224 ] )
@@ -230,17 +240,17 @@ function srcCSS() {
230240 . pipe ( gulp . dest ( config . production + '/' + config . paths . css ) ) ;
231241
232242 const themes = gulp . src ( [
233- config . development + '/' + config . paths . css + '/themes/*.{css,scss,less,styl}' ,
234- config . nodeDirectory + '/admin-lte/dist/css/adminlte.min.css' ,
235- ] )
236- . pipe ( gulpIf ( '*.scss' , sass ( ) , gulpIf ( '*.less' , less ( ) , gulpIf ( '*.styl' , stylus ( ) ) ) ) )
237- . pipe ( autoprefixer ( ) )
238- . pipe ( gulpIf ( ! config . debug , minifyCSS ( config . minifiers . css ) ) )
239- . pipe ( concat ( 'themes.min.css' ) )
240- . pipe ( flatten ( ) )
241- . pipe ( gulp . dest ( config . production + '/' + config . paths . css ) ) ;
242-
243- return merge ( css , print , themes ) ;
243+ config . development + '/' + config . paths . css + '/themes/*.{css,scss,less,styl}' ,
244+ config . nodeDirectory + '/admin-lte/dist/css/adminlte.min.css' ,
245+ ] )
246+ . pipe ( gulpIf ( '*.scss' , sass ( ) , gulpIf ( '*.less' , less ( ) , gulpIf ( '*.styl' , stylus ( ) ) ) ) )
247+ . pipe ( autoprefixer ( ) )
248+ . pipe ( gulpIf ( ! config . debug , minifyCSS ( config . minifiers . css ) ) )
249+ . pipe ( concat ( 'themes.min.css' ) )
250+ . pipe ( flatten ( ) )
251+ . pipe ( gulp . dest ( config . production + '/' + config . paths . css ) ) ;
252+
253+ return waitPipes ( [ css , print , themes ] , done ) ;
244254}
245255
246256
@@ -251,27 +261,27 @@ const images = srcImages;
251261function srcImages ( ) {
252262 return gulp . src ( [
253263 config . development + '/' + config . paths . images + '/**/*.{jpg,png,jpeg,gif}' ,
254- ] )
264+ ] , { read : false } )
255265 . pipe ( gulp . dest ( config . production + '/' + config . paths . images ) ) ;
256266}
257267
258- function leaflet ( ) {
259- gulp . src ( [
268+ function leaflet ( done ) {
269+ const leaflet = gulp . src ( [
260270 config . nodeDirectory + '/leaflet.fullscreen/icon-fullscreen.svg' ,
261- ] ) . pipe ( gulp . dest ( config . production + '/' + config . paths . images + '/leaflet' ) ) ;
262-
263- gulp . src ( [
264271 config . development + '/' + config . paths . images + '/leaflet/*' ,
265- ] ) . pipe ( gulp . dest ( config . production + '/' + config . paths . images + '/leaflet' ) ) ;
272+ ] , { read : false } )
273+ . pipe ( gulp . dest ( config . production + '/' + config . paths . images + '/leaflet' ) ) ;
266274
267- return gulp . src ( [
275+ const images = gulp . src ( [
268276 config . nodeDirectory + '/leaflet/dist/images/*.{jpg,png,jpeg}' ,
269- ] )
277+ ] , { read : false } )
270278 . pipe ( flatten ( ) )
271279 . pipe ( gulp . dest ( config . production + '/' + config . paths . images + '/leaflet' ) ) ;
280+
281+ return waitPipes ( [ images , leaflet ] , done ) ;
272282}
273283
274- function wacom ( ) {
284+ function wacom ( done ) {
275285 const vendor = [
276286 'modules/clipper-lib/clipper.js' ,
277287 'modules/js-md5/build/md5.min.js' ,
@@ -282,7 +292,7 @@ function wacom(){
282292 'modules/rbush/rbush.min.js' ,
283293 'modules/js-ext/js-ext-min.js' ,
284294 'modules/digital-ink/digital-ink-min.js' ,
285- 'common/will/tools.js' ,
295+ 'common/will/tools.js' ,
286296 'modules/sjcl/sjcl.js' ,
287297 'common/libs/signature_sdk.js' ,
288298 'common/libs/signature_sdk_helper.js' ,
@@ -296,19 +306,20 @@ function wacom(){
296306 vendor [ i ] = config . development + '/' + config . paths . js + '/wacom/' + vendor [ i ] ;
297307 }
298308
299- gulp . src ( [
309+ const wasm = gulp . src ( [
300310 'assets/src/js/wacom/common/libs/signature_sdk.wasm'
301- ] )
311+ ] , { read : false } )
302312 . pipe ( gulp . dest ( config . production + '/' + config . paths . js + '/wacom/' ) ) ;
303313
304- return gulp . src ( vendor , {
314+ const js = gulp . src ( vendor , {
305315 allowEmpty : true
306316 } )
307317 . pipe ( babel ( config . babelOptions ) )
308318 . pipe ( concat ( 'wacom.min.js' ) )
309319 . pipe ( gulpIf ( ! config . debug , minifyJS ( ) ) )
310320 . pipe ( gulp . dest ( config . production + '/' + config . paths . js ) ) ;
311-
321+
322+ return waitPipes ( [ js , wasm ] , done ) ;
312323}
313324
314325// Elaborazione dei fonts
@@ -331,7 +342,7 @@ const fonts = gulp.parallel(() => {
331342 vendor [ i ] = config . nodeDirectory + '/' + vendor [ i ] ;
332343 }
333344
334- return gulp . src ( vendor )
345+ return gulp . src ( vendor , { read : false } )
335346 . pipe ( flatten ( ) )
336347 . pipe ( gulp . dest ( config . production + '/' + config . paths . fonts ) ) ;
337348} , srcFonts ) ;
@@ -340,32 +351,31 @@ const fonts = gulp.parallel(() => {
340351function srcFonts ( ) {
341352 return gulp . src ( [
342353 config . development + '/' + config . paths . fonts + '/**/*.{otf,eot,svg,ttf,woff,woff2}' ,
343- ] )
354+ ] , { read : false } )
344355 . pipe ( flatten ( ) )
345356 . pipe ( gulp . dest ( config . production + '/' + config . paths . fonts ) ) ;
346357}
347358
348- function ckeditor ( ) {
349-
350- const ckeditor = gulp . src ( [
351- config . nodeDirectory + '/ckeditor4/{adapters,lang,skins,plugins,core}/**/*.{js,json,css,png,gif,html}' ,
352- config . nodeDirectory + '/ckeditor4/*.{js,css}' ,
353- ] )
359+ function ckeditor ( done ) {
360+ const ckeditor = gulp . src ( [
361+ config . nodeDirectory + '/ckeditor4-full/{adapters,lang,skins,plugins,core}/**/*.{js,json,css,png,gif,html}' ,
362+ config . nodeDirectory + '/ckeditor4-full/*.{js,css}' ,
363+ ] , { read : false } )
354364 . pipe ( gulp . dest ( config . production + '/' + config . paths . js + '/ckeditor' ) ) ;
355365
356366 const plugins = gulp . src ( [
357- config . nodeDirectory + '/ckeditor /plugins/{emoji,autocomplete,textmatch,textwatcher}/**/*.{js,json,css,png,gif,html}' ,
358- config . nodeDirectory + '/ckeditor-image-to-base/*.{js,json,css,png,gif,html}' ,
359- ] )
367+ config . nodeDirectory + '/ckeditor4 /plugins/{emoji,autocomplete,textmatch,textwatcher}/**/*.{js,json,css,png,gif,html}' ,
368+ // config.nodeDirectory + '/ckeditor-image-to-base/*.{js,json,css,png,gif,html}',
369+ ] , { read : false } )
360370 . pipe ( gulp . dest ( config . production + '/' + config . paths . js + '/ckeditor/plugins' ) ) ;
361371
362- return merge ( ckeditor , plugins ) ;
372+ return waitPipes ( [ ckeditor , plugins ] , done ) ;
363373}
364374
365375function colorpicker ( ) {
366376 return gulp . src ( [
367377 config . nodeDirectory + '/bootstrap-colorpicker/dist/**/*.{jpg,png,jpeg}' ,
368- ] )
378+ ] , { read : false } )
369379 . pipe ( flatten ( ) )
370380 . pipe ( gulp . dest ( config . production + '/' + config . paths . images + '/bootstrap-colorpicker' ) ) ;
371381}
@@ -403,44 +413,43 @@ function csrf() {
403413 . pipe ( gulp . dest ( config . production + '/' + config . paths . js + '/csrf' ) ) ;
404414}
405415
406- function pdfjs ( ) {
416+ function pdfjs ( done ) {
407417 const web = gulp . src ( [
408- config . nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-4.0.379 -dist/web/**/*' ,
409- '!' + config . nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-4.0.379 -dist/web/cmaps/*' ,
410- '!' + config . nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-4.0.379 -dist/web/*.map' ,
411- '!' + config . nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-4.0.379 -dist/web/*.pdf' ,
412- ] )
418+ config . nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-* -dist/web/**/*' ,
419+ '!' + config . nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-* -dist/web/cmaps/*' ,
420+ '!' + config . nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-* -dist/web/*.map' ,
421+ '!' + config . nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-* -dist/web/*.pdf' ,
422+ ] , { read : false } )
413423 . pipe ( gulp . dest ( config . production + '/pdfjs/web' ) ) ;
414424
415425 const build = gulp . src ( [
416- config . nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-4.0.379 -dist/build/*' ,
417- '!' + config . nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-4.0.379 -dist/build/*.map' ,
418- ] )
426+ config . nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-* -dist/build/*' ,
427+ '!' + config . nodeDirectory + '/pdfjs-viewer-element/dist/pdfjs-* -dist/build/*.map' ,
428+ ] , { read : false } )
419429 . pipe ( gulp . dest ( config . production + '/pdfjs/build' ) ) ;
420430
421- return merge ( web , build ) ;
431+ return waitPipes ( [ web , build ] , done ) ;
422432}
423433
424434function uaparser ( ) {
425435 return gulp . src ( [
426436 config . nodeDirectory + '/ua-parser-js/dist/icons/mono/**/*' ,
427437 '!' + config . nodeDirectory + '/ua-parser-js/dist/icons/mono/LICENSE.md' ,
428- ] )
429- . pipe ( gulp . dest ( config . production + '/img /icons/' ) ) ;
438+ ] , { read : false } )
439+ . pipe ( gulp . dest ( config . production + '/' + config . paths . images + ' /icons/') ) ;
430440}
431441
432442// Elaborazione e minificazione delle informazioni sull'internazionalizzazione
433443function i18n ( ) {
434444 return gulp . src ( [
435445 config . nodeDirectory + '/**/{i18n,lang,locale,locales}/*.{js,json}' ,
436- config . development + '/' + config . paths . js + '/i18n/**/*.{js,json}' ,
446+ // config.development + '/' + config.paths.js + '/i18n/**/*.{js,json}',
437447 config . nodeDirectory + '/moment/min/locales.js' ,
438448 '!' + config . nodeDirectory + '/**/{src,plugins}/**' ,
439- '!' + config . nodeDirectory + '/ckeditor4/**' ,
440- '!' + config . nodeDirectory + '/summernote/**' ,
449+ '!' + config . nodeDirectory + '/ckeditor4-full /**' ,
450+ // '!' + config.nodeDirectory + '/summernote/**',
441451 '!' + config . nodeDirectory + '/jquery-ui/**' ,
442452 ] )
443- //.pipe(gulpIf('*.js', minifyJS(), gulpIf('*.json', minifyJSON())))
444453 . pipe ( gulpIf ( '!*.min.*' , rename ( {
445454 suffix : '.min'
446455 } ) ) )
@@ -452,9 +461,9 @@ function i18n() {
452461
453462
454463// Operazioni per la release
455- function release ( done ) {
464+ export function release ( done ) {
456465 // Impostazione dello zip
457- let output = fs . createWriteStream ( './release.zip' , { flags : 'w' } ) ;
466+ let output = fs . createWriteStream ( './release.zip' , { flags : 'w' } ) ;
458467 let archive = archiver ( 'zip' ) ;
459468
460469 output . on ( 'close' , function ( ) {
@@ -526,14 +535,14 @@ function release(done) {
526535 archive . file ( 'logs/.htaccess' , { } ) ;
527536
528537 // Aggiunta del file dei checksum
529- let checksumFile = fs . createWriteStream ( './checksum.json' , { flags : 'w' } ) ;
538+ let checksumFile = fs . createWriteStream ( './checksum.json' , { flags : 'w' } ) ;
530539 checksumFile . write ( JSON . stringify ( checksum ) ) ;
531540 checksumFile . close ( ) ;
532541 archive . file ( 'checksum.json' , { } ) ;
533542
534543 // Aggiunta del file per il controllo di integrità del database
535544 var bufferStream = new Readable ( ) ;
536-
545+
537546 bufferStream . push ( shell . exec ( 'php update/structure.php' , {
538547 silent : true
539548 } ) . stdout ) ;
@@ -594,25 +603,18 @@ function release(done) {
594603 } ) . catch ( err => {
595604 console . error ( 'Si è verificato un errore:' , err ) ;
596605 } ) ;
597-
598606 } ) ;
599607}
600608
601609// Pulizia
602- function clean ( ) {
610+ export function clean ( ) {
603611 return del ( [ config . production ] ) ;
604- }
612+ } ;
605613
606614// Operazioni di default per la generazione degli assets
607- const bower = gulp . series ( clean , gulp . parallel ( JS , CSS , images , fonts , ckeditor , colorpicker , i18n , pdfjs , uaparser , hotkeys , chartjs , password_strength , csrf , leaflet , wacom ) ) ;
608-
609- // Debug su CSS e JS
610- exports . srcJS = srcJS ;
611- exports . srcCSS = srcCSS ;
615+ export const bower = gulp . series ( clean , gulp . parallel ( JS , CSS , images , fonts , ckeditor , colorpicker , i18n , pdfjs , hotkeys , chartjs , password_strength , csrf , leaflet , wacom , uaparser ) ) ;
612616
613- exports . bower = bower ;
614- exports . release = release ;
615- exports . default = bower ;
617+ export default bower ;
616618
617619// Watch task - lanciato con `gulp watch`, resta in attesa e ogni volta che viene modificato un asset in src
618620// viene aggiornata la dist
0 commit comments