J'ai une tâche gulp rjs qui concatène et uglifie tous mes fichiers .JS personnalisés (toutes les bibliothèques non vendeuses).
Ce que j'essaie de faire, c'est d'exclure certains fichiers / répertoires de cette tâche (contrôleurs et directives).
Voici mon arbre:
- 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
Voici mon gulp.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/**'])
), puis gulp-ignoreRéponses:
Réponse rapide
Sur src, vous pouvez toujours spécifier les fichiers à ignorer en utilisant "!".
Exemple (vous souhaitez exclure tous les fichiers * .min.js de votre dossier et sous-dossier js:
Vous pouvez également le faire pour des fichiers individuels.
Réponse élargie:
Extrait de la documentation de gulp:
glob fait référence à la syntaxe node-glob ou il peut s'agir d'un chemin de fichier direct.
Donc, en regardant la documentation de node-glob, nous pouvons voir qu'elle utilise la bibliothèque minimatch pour faire sa correspondance.
Sur la documentation de minimatch , ils soulignent ce qui suit:
Et c'est pourquoi utiliser! le symbole exclura les fichiers / répertoires d'une tâche de gorgée
la source
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:"."})
pour que les motifs globaux fonctionnent correctement.Gulp utilise micromatch sous le capot pour faire correspondre les globes, donc si vous souhaitez exclure l'un des fichiers .min.js, vous pouvez obtenir le même résultat en utilisant une fonction de globalisation étendue comme celle-ci:
Fondamentalement, cela dit: saisir tout à n'importe quel niveau à l'intérieur de js qui ne se termine pas par * .min.js
la source