181 lines
5.2 KiB
JavaScript
Vendored
181 lines
5.2 KiB
JavaScript
Vendored
const gulp = require('gulp'),
|
|
sass = require('gulp-sass'), // Transformer des fichiers SCSS en un seul CSS
|
|
postcss = require("gulp-postcss"), // Préprocesseur like Sass mais modulable
|
|
autoprefixer = require("autoprefixer"), // Ajout d'instruction multi-navigateurs
|
|
cssnano = require("cssnano"), // Minimification du fichier CSS
|
|
sourcemaps = require("gulp-sourcemaps"), //frfr
|
|
concat = require('gulp-concat'), // Concatener les fichiers JS
|
|
uglify = require('gulp-uglify'), // Minimification du fichier JS
|
|
imagemin = require('gulp-imagemin'), // Minimification des images
|
|
cache = require('gulp-cache'), // Mise en cache des images
|
|
del = require('del'), // Suppression de fichiers
|
|
browserSync = require('browser-sync').create(); // Synchronisation des modifs avec un navigateur
|
|
|
|
const src = './src',
|
|
dest = './assets';
|
|
|
|
var paths = {
|
|
srcStyle: src + '/scss',
|
|
destStyle: dest + '/css',
|
|
srcJS: src + '/js',
|
|
destJS: dest + '/js',
|
|
srcImages: src + '/images',
|
|
destImages: dest + '/images',
|
|
srcFonts: src + '/fonts',
|
|
destFonts: dest + '/fonts'
|
|
// styles: {
|
|
// // src: 'src/scss/**/*.scss',
|
|
// src: 'src/scss/style.scss',
|
|
// dest: 'assets/css'
|
|
// },
|
|
// js:{
|
|
// src: 'src/js/**/*.js',
|
|
// dest: 'assets/js'
|
|
// }
|
|
};
|
|
|
|
// Fonction appelée par défaut lorsqu'on tape "gulp"
|
|
gulp.task('default',
|
|
// gulp.series(gulp.parallel(scss,concatjs),watch)
|
|
gulp.series(watchAutoMAJ)
|
|
);
|
|
|
|
// Concaténation + Copie des JS dans le dossier de Prd
|
|
// MAJ automatique du navigateur lorsque le "main.js" est modifié
|
|
function concatJSAutoMAJ(){
|
|
return gulp.src(paths.srcJS + '/**/*.js')
|
|
.pipe(concat('main.js'))
|
|
.pipe(gulp.dest(paths.destJS))
|
|
.pipe(browserSync.stream());
|
|
}
|
|
exports.concatJSAuto=concatJSAutoMAJ;
|
|
|
|
// Concaténation + Copie des JS dans le dossier de Prd
|
|
function concatJS(){
|
|
return gulp.src(paths.srcJS + '/**/*.js')
|
|
.pipe(concat('main.js'))
|
|
.pipe(gulp.dest(paths.destJS))
|
|
}
|
|
exports.concatJS=concatJS;
|
|
|
|
// Concaténation + Copie des SCSS dans le dossier de Prd
|
|
// MAJ automatique du navigateur lorsque le "style.css" est modifié
|
|
function scssAutoMAJ() {
|
|
return gulp
|
|
.src(paths.srcStyle + '/style.scss')
|
|
.pipe(sourcemaps.init())
|
|
.pipe(sass())
|
|
.on('error',sass.logError)
|
|
.pipe(postcss([autoprefixer()]))
|
|
.pipe(sourcemaps.write())
|
|
.pipe(gulp.dest(paths.destStyle))
|
|
.pipe(browserSync.reload({
|
|
stream: true
|
|
}));
|
|
}
|
|
exports.scssAuto=scssAutoMAJ;
|
|
|
|
// Concaténation + Copie des SCSS dans le dossier de Prd
|
|
function scss() {
|
|
return gulp
|
|
.src(paths.srcStyle + '/style.scss')
|
|
.pipe(sourcemaps.init())
|
|
.pipe(sass())
|
|
.on('error',sass.logError)
|
|
.pipe(postcss([autoprefixer()]))
|
|
.pipe(sourcemaps.write())
|
|
.pipe(gulp.dest(paths.destStyle))
|
|
}
|
|
exports.scss=scss;
|
|
|
|
// Minimification du "style.css" de Prd
|
|
function minimifyCSS() {
|
|
return gulp
|
|
.src(paths.destStyle + '/style.css')
|
|
.pipe(postcss([cssnano()]))
|
|
.pipe(gulp.dest(paths.destStyle))
|
|
}
|
|
exports.minimifyCSS=minimifyCSS;
|
|
|
|
// Minimification du "main.js" de Prd
|
|
function minimifyJS() {
|
|
return gulp
|
|
.src(paths.destJS + '/main.js')
|
|
.pipe(uglify())
|
|
.pipe(gulp.dest(paths.destJS))
|
|
}
|
|
exports.minimifyJS=minimifyJS;
|
|
|
|
// Minimification des images de Prd
|
|
function minimifyImages() {
|
|
return gulp
|
|
.src(paths.destImages + '/**/*.+(png|jpg|gif|svg|ico)')
|
|
.pipe(cache(imagemin({
|
|
interlaced: true
|
|
})))
|
|
.pipe(gulp.dest(paths.destImages))
|
|
}
|
|
exports.minimifyImages=minimifyImages;
|
|
|
|
// Minimification + copie des IMAGES dans le dossier de Prd
|
|
function images() {
|
|
return gulp.src(paths.srcImages + '/**/*.+(png|jpg|gif|svg|ico)')
|
|
.pipe(gulp.dest(paths.destImages));
|
|
}
|
|
exports.images=images;
|
|
|
|
// Copie des FONTS dans le dossier de Prd
|
|
function fonts() {
|
|
return gulp.src(paths.srcFonts + '/**/*')
|
|
.pipe(gulp.dest(paths.destFonts));
|
|
}
|
|
exports.fonts=fonts;
|
|
|
|
async function clean() {
|
|
del(dest);
|
|
cache.clearAll();
|
|
}
|
|
exports.clean=clean;
|
|
|
|
async function cleanAssets() {
|
|
del([dest + '/**/*',
|
|
'!' + paths.destImages,
|
|
'!' + paths.destImages + '/**/*'
|
|
]);
|
|
}
|
|
exports.cleanAssets=cleanAssets;
|
|
|
|
gulp.task('buildPrd',
|
|
gulp.series(cleanAssets, gulp.parallel(scss,concatJS, images, fonts), minimifyCSS, minimifyJS, minimifyImages)
|
|
);
|
|
|
|
gulp.task('buildDev',
|
|
gulp.series(cleanAssets, gulp.parallel(scss,concatJS, images, fonts))
|
|
);
|
|
|
|
// Ecoute de modifications dans les fichiers, SCCS, PHP et JS
|
|
function watch(){
|
|
gulp.watch(paths.srcStyle + '/**/*.scss', gulp.series(scss));
|
|
gulp.watch(paths.srcJS + '/**/*.js', gulp.series(concatJS));
|
|
gulp.watch(paths.srcImages + '/**/*.+(png|jpg|gif|svg|ico)', gulp.series(images));
|
|
}
|
|
exports.watch=watch;
|
|
|
|
// Initialisation de l'utilitaire de SYNCHRONISATION
|
|
// Ecoute de modifications dans les fichiers, SCCS, PHP et JS
|
|
function watchAutoMAJ(){
|
|
browserSync.init({
|
|
browser: "chrome",
|
|
// browser: ["chrome", "firefox"],
|
|
proxy: {
|
|
target: 'http://jeusselin.test/integration/',
|
|
ws: true
|
|
},
|
|
host: '192.168.0.32'
|
|
});
|
|
gulp.watch(paths.srcStyle + '/**/*.scss', gulp.series(scssAutoMAJ));
|
|
gulp.watch(paths.srcJS + '/**/*.js', gulp.series(concatJSAutoMAJ));
|
|
gulp.watch(paths.srcImages + '/**/*.+(png|jpg|gif|svg|ico)', gulp.series(images));
|
|
gulp.watch('./**/*.php').on('change', browserSync.reload);
|
|
}
|
|
exports.watchAuto=watchAutoMAJ;
|