Eu tenho uma tarefa gulp rjs que concatena e uglifica todos os meus arquivos .JS personalizados (quaisquer bibliotecas que não sejam de fornecedores).
O que estou tentando fazer é excluir alguns arquivos / diretórios desta tarefa (controladores e diretivas).
Heres minha árvore:
- 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
Aqui meu 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/**'])
) primeiro, depois engolir-ignoreRespostas:
Resposta rápida
No src, você sempre pode especificar arquivos para ignorar usando "!".
Exemplo (você deseja excluir todos os arquivos * .min.js na pasta e na subpasta js:
Você pode fazer isso também para arquivos individuais.
Resposta expandida:
Extraído da documentação do gulp:
glob refere-se à sintaxe node-glob ou pode ser um caminho direto de arquivo.
Portanto, olhando para a documentação do node-glob , podemos ver que ele usa a biblioteca minimatch para fazer sua correspondência.
Na documentação do minimatch , eles apontam o seguinte:
E é por isso que usando! O símbolo excluirá arquivos / diretórios de uma tarefa de gulp
fonte
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 fazer com que os padrões glob funcionassem corretamente.O Gulp usa micromatch sob o capô para globs correspondentes, portanto, se você deseja excluir qualquer um dos arquivos .min.js., pode obter o mesmo usando um recurso de globbing estendido como este:
Basicamente, o que diz é: pegue tudo em qualquer nível dentro de js que não termine com * .min.js
fonte