Files
fitme3070.pt/site/assets/js/splide/gulpfile.js
T
andreandClaude Opus 4.8 e68d357177 Initial import of fitme3070.pt platform
Plain-PHP fleet platform with id.andmore.pt SSO. Wires shared/platform-tools
as a submodule (platform_update, backups, git/migration tools) like the other
platforms.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 10:44:58 +01:00

141 lines
3.0 KiB
JavaScript

'use strict';
/*
* Dependencies.
*/
const gulp = require( 'gulp' );
const rename = require( 'gulp-rename' );
const sass = require( 'gulp-sass' );
const sassGlob = require( 'gulp-sass-glob' );
const postcss = require( 'gulp-postcss' );
const autoprefixer = require( 'autoprefixer' );
const cssnano = require( 'cssnano' );
const merge = require( 'merge-stream' );
const concat = require( 'gulp-concat' );
const webpackStream = require( 'webpack-stream' );
const eslint = require( 'gulp-eslint' );
const gzip = require( 'gulp-gzip' );
/*
* Webpack config paths.
*/
const js = {
complete: {
path: './build/complete/config',
dest: './dist/js',
},
minified: {
path: './build/complete/config-min',
dest: './dist/js',
gzip: true,
},
modular: {
path: './build/module/config',
dest: './dist/js',
},
};
/*
* Path definitions.
*/
const css = {
all: {
path : './src/sass/core/*.scss',
dest : './dist/css',
merge: {
filename: 'splide.css',
path : './src/sass/themes/default/*.scss',
},
},
core: {
path: './src/sass/core/*.scss',
dest: './dist/css',
},
default: {
path : './src/sass/core/*.scss',
dest : './dist/css/themes',
basename: 'splide-default',
merge : {
filename: 'splide.css',
path : './src/sass/themes/default/*.scss',
},
},
skyblue: {
path : './src/sass/core/*.scss',
dest : './dist/css/themes',
basename: 'splide-skyblue',
merge : {
filename: 'splide.css',
path : './src/sass/themes/sky-blue/*.scss',
},
},
seagreen: {
path : './src/sass/core/*.scss',
dest : './dist/css/themes',
basename: 'splide-sea-green',
merge : {
filename: 'splide.css',
path : './src/sass/themes/sea-green/*.scss',
},
},
};
/*
* Build a script file.
*/
gulp.task( 'build:js', done => {
Object.values( js ).forEach( settings => {
const stream = webpackStream( { config: require( settings.path ) } )
.pipe( gulp.dest( settings.dest ) );
if ( settings.gzip ) {
stream.pipe( gzip() ).pipe( gulp.dest( settings.dest ) );
}
} );
done();
} );
/*
* Build sass files.
*/
gulp.task( 'build:sass', done => {
Object.values( css ).forEach( settings => {
let stream = gulp.src( settings.path );
if ( settings.merge ) {
stream = merge( stream, gulp.src( settings.merge.path ) )
.pipe( sassGlob() )
.pipe( sass() )
.pipe( concat( settings.merge.filename ) );
}
stream = stream
.pipe( sassGlob() )
.pipe( sass() )
.pipe( postcss( [
cssnano( { reduceIdents: false } ),
autoprefixer( { overrideBrowserslist: [ '> 5%' ] } )
] ) );
if ( settings.basename ) {
stream = stream.pipe( rename( { basename: settings.basename } ) );
}
stream
.pipe( rename( { suffix: '.min' } ) )
.pipe( gulp.dest( settings.dest ) );
} );
done();
} );
/*
* Run lint.
*/
gulp.task( 'lint', () => {
return gulp.src( [ './src/**/*.js', './tests/**/*.js' ] )
.pipe( eslint( { useEslintrc: true } ) )
.pipe( eslint.format() )
.pipe( eslint.failAfterError() );
} );