Tengo una tarea gulp rjs que concatena y uglifica todos mis archivos .JS personalizados (cualquier biblioteca que no sea de proveedor).
Lo que intento hacer es excluir algunos archivos / directorios de esta tarea (controladores y directivas).
Aquí está mi árbol:
- application
- resources
- js
main.js
- vendor
- jquery
- modernzr
- angular
- controllers
- controller1
- controller2
- controller3
- directives
- directives1
- directives2
- directives3
- widgets
- widget1
- widget2
- widget3
- widget4
- modules
- modules1
- modules2
- modules3
- modules4
Aquí mi trago.js
dir = {
app: 'application',
dest: 'dest',
};
config = {
src: {
js: dir.app + '/resources/js'
},
dest: {
js: dir.dest + '/resources/js'
}
};
gulp.task('rjs', function() {
rjs({
baseUrl: config.src.js,
out: 'main.js',
name: 'main',
mainConfigFile: config.src.js + '/main.js',
exclude: [ 'jquery', 'angular']
})
.pipe(prod ? uglify({ mangle: false, outSourceMap: true, compress: { drop_console: true } }) : gutil.noop())
.pipe(gulp.dest(config.dest.js))
.pipe(filesize())
.pipe(dev ? connect.reload() : gutil.noop());
});
gulp.src(['./*.js', '!./node_modules/**'])
primero el patrón de exclusión ( ), luego gulp-ignoreRespuestas:
Respuesta rápida
En src, siempre puede especificar archivos para ignorar usando "!".
Ejemplo (desea excluir todos los archivos * .min.js en su carpeta y subcarpeta js:
También puede hacerlo para archivos individuales.
Respuesta ampliada:
Extraído de la documentación de Gulp:
glob se refiere a la sintaxis de nodo-glob o puede ser una ruta de archivo directa.
Entonces, mirando la documentación de nodo-glob podemos ver que usa la biblioteca minimatch para hacer su correspondencia.
En la documentación de minimatch , señalan lo siguiente:
Y es por eso que usar! el símbolo excluirá archivos / directorios de una tarea de trago
fuente
Negation The intent for negation would be for a pattern starting with ! to match everything that doesn't match the supplied pattern. However, the implementation is weird, and for the time being, this should be avoided. The behavior is deprecated in version 5, and will be removed entirely in version 6.
gulp.src([/*file globs*/], {base:"."})
para que los patrones globales funcionen correctamente.Gulp usa micromatch debajo del capó para hacer coincidir los globos, por lo que si desea excluir cualquiera de los archivos .min.js, puede lograr lo mismo utilizando una función de globo extendida como esta:
Básicamente lo que dice es: toma todo en cualquier nivel dentro de js que no termine con * .min.js
fuente