[[oktatas:web:nodejs:gulp|< Gulp]] ====== Gulp - Gyorskezdés ====== * **Szerző:** Sallai András * Copyright (c) 2024, Sallai András * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Projekt készítése ===== mkdir app01 cd app01 npm init -y ===== Függőségek telepítése ===== npm install --save-dev browser-sync gulp gulp-uglify gulp-clean-css ===== A gulfile.js ===== const { src, dest, series, parallel, watch } = require('gulp'); const uglify = require('gulp-uglify'); const cleanCss = require('gulp-clean-css'); const browserSync = require('browser-sync').create(); function genHTML(cb) { console.log('HTML másolás...'); src('src/**/*.html') .pipe(dest('public')) cb(); } function minifyJS(cb) { console.log('JavaScript minifikálás ...'); src('src/**/*.js') .pipe(uglify()) .pipe(dest('public')); cb(); } function minifyCSS(cb) { console.log('CSS minifikálás ...'); src('src/**/*.css') .pipe(cleanCss()) .pipe(dest('public')); cb(); } function build(cb) { parallel(genHTML, minifyJS, minifyCSS)(cb); } function devServe(cb) { browserSync.init({ server: [ "src", "node_modules/bootstrap/dist/css", "node_modules/bootstrap/dist/js" ] }); watch('src/**/*').on('change', browserSync.reload); cb(); } function prodServe(cb) { browserSync.init({ server: { baseDir: './public' }, port: 3500 }); watch('public/**/*').on('change', browserSync.reload); cb(); } exports.build = build; exports.serve = devServe; exports.serve = prodServe; exports.default = series(build, devServe); Eredetileg szereplet itt a gulp-imagemin csomag is, de a 8.x verziótól csak ES modulként használható. A Browser-sync szerver a watch: true beállításával helyettesíthető a watch kezdetű sor: function devServe(cb) { browserSync.init({ server: [ "src", "node_modules/bootstrap/dist/css", "node_modules/bootstrap/dist/js" ], port: 3000, watch: true }); cb(); } ===== A package.json ===== { "name": "app01", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "npm run dev", "dev": "gulp devserve", "prod": "gulp prodserve", "build": "gulp build" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "browser-sync": "^3.0.2", "gulp": "^5.0.0", "gulp-clean-css": "^4.3.0", "gulp-uglify": "^3.0.2" } }