-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGulpfile.js
More file actions
166 lines (147 loc) · 5.05 KB
/
Gulpfile.js
File metadata and controls
166 lines (147 loc) · 5.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
var gulp = require('gulp'),
del = require('del'),
browserSync = require('browser-sync').create(),
concat = require('gulp-concat'),
imagemin = require('gulp-imagemin'),
jshint = require('gulp-jshint'),
stylish = require('jshint-stylish'),
sass = require('gulp-sass'),
sourcemaps = require('gulp-sourcemaps'),
uglify = require('gulp-uglify');
// Definición de direcotrios origen
var srcPaths = {
images: 'src/images/',
scripts: 'src/js/',
styles: 'src/scss/',
files: 'src/',
libs: 'src/lib/',
audio: 'src/audio/',
data: 'src/data/'
};
// Definición de directorios destino
var distPaths = {
images: 'dist/images/',
scripts: 'dist/js/',
styles: 'dist/css/',
files: 'dist/',
libs: 'dist/lib/',
audio: 'dist/audio/',
data: 'dist/data/'
};
// Limpieza del directorio dist
gulp.task('clean', function(cb) {
del([ distPaths.files+'*.html',
distPaths.images+'**/*',
distPaths.scripts+'*.js',
distPaths.styles+'*.css',
distPaths.libs+'**/*',
distPaths.audio+'**/*',
distPaths.data+'**/*'
], cb);
});
// Copia de los cambios en los ficheros html en el directorio dist.
gulp.task('html', function() {
return gulp.src([srcPaths.files+'*.html',srcPaths.files+'*.ico'])
.pipe(gulp.dest(distPaths.files))
.pipe(browserSync.stream());
});
// Copia de los cambios en las librerías en el directorio dist.
gulp.task('libs', function() {
return gulp.src([srcPaths.libs+'**/*'])
.pipe(gulp.dest(distPaths.libs))
.pipe(browserSync.stream());
});
// Copia de los cambios en los audios en el directorio dist.
gulp.task('audio', function() {
return gulp.src([srcPaths.audio+'**/*'])
.pipe(gulp.dest(distPaths.audio))
.pipe(browserSync.stream());
});
// Copia de los cambios en los datos en el directorio dist.
gulp.task('data', function() {
return gulp.src([srcPaths.data+'**/*'])
.pipe(gulp.dest(distPaths.data))
.pipe(browserSync.stream());
});
/*
* Procesamiento de imágenes para comprimir / optimizar las mismas.
*/
gulp.task('imagemin', function() {
return gulp.src([srcPaths.images+'**/*'])
.pipe(imagemin({
progressive: true,
interlaced: true,
svgoPlugins: [{removeUnknownsAndDefaults: false}, {cleanupIDs: false}]
}))
.pipe(gulp.dest(distPaths.images))
.pipe(browserSync.stream());
});
/*
* Procesamiento de ficheros SCSS para la generación de los ficheros
* CSS correspondientes. Los sourcemaps en este caso se generan dentro
* del propio fichero.
*/
gulp.task('css', function() {
return gulp.src([srcPaths.styles+'**/*.scss'])
.pipe(sourcemaps.init())
.pipe(sass())
.pipe(sourcemaps.write())
.pipe(gulp.dest(distPaths.styles))
.pipe(browserSync.stream());
});
/*
* Procesamiento de ficheros JS mediante JSHint para detección de errores.
* Este proceso es previo al tratamiento de los ficheros JS para la
* obtención del fichero concatenado y minificado.
*/
gulp.task('lint', function() {
return gulp.src([srcPaths.scripts+'**/*.js'])
.pipe(jshint())
.pipe(jshint.reporter(stylish));
});
/*
* Procesamiento de ficheros JS para la generación de un fichero
* final único y minificado. Los sourcemaps se generan en una
* carpeta independiente en vez de en el propio fichero.
*/
gulp.task('js', ['lint'], function() {
return gulp.src([srcPaths.scripts+'*.js'])
.pipe(sourcemaps.init())
.pipe(concat('all.min.js'))
.pipe(uglify())
.pipe(sourcemaps.write('maps'))
.pipe(gulp.dest(distPaths.scripts))
.pipe(browserSync.stream());
});
/*
* Tarea para lanzar el proceso de servidor mediante BrowserSync.
* Antes de comenzar la propia tarea ejecuta las tareas de las que tiene
* dependencia: html, imagemin, css y js necesarias para disponer
* del proyecto en dist, ya que cada vez que se lanza gulp, se hace una
* limpieza de dicho directorio.
*
* En este caso se trabaja con un servidor local mediante un proxy
* y se define la ruta de partida, así como los navegadores a lanzar
* en caso de estar disponibles en el equipo.
*
* Adicionalmente se crean los watchers para procesar los cambios que se
* puedan producir en los archivos sensibles para el proyecto.
*/
gulp.task('serve', ['html', 'imagemin', 'css', 'js', 'libs', 'audio', 'data'], function() {
browserSync.init({
injectChanges: true,
logLevel: "info",
browser: ["google chrome"],
proxy: "localhost:80",
startPath: "/BigFish/dist/"
});
gulp.watch(srcPaths.files+'*.html', ['html']);
gulp.watch(srcPaths.images+'**/*', ['imagemin']);
gulp.watch(srcPaths.styles+'**/*.scss', ['css']);
gulp.watch(srcPaths.scripts+'**/*.js', ['js']);
});
/*
* Definción de la tarea por defecto que en este caso limpia el directorio destino
* y lanza la tarea de servidor.
*/
gulp.task('default', ['clean', 'serve'], function() {});