2014-04-30 15 views
186

Ho un task gulp rjs che concatena e uglifica tutti i miei file .JS personalizzati (qualsiasi libreria non vendor).Esclusione di file/directory dal task Gulp

Quello che sto cercando di fare, è escludere alcuni file/directory da questa attività (controller e direttive).

Heres il mio albero:

- 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 

Ecco i miei gulp.js risposta

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()); 

}); 
+1

Hai provato a ignorare Gulp? https://www.npmjs.org/package/gulp-ignore – danbars

+1

@ user1655734: la documentazione di gulp-ignore (https://www.npmjs.com/package/gulp-ignore) suggerisce il modello di esclusione ('gulp.src (['./*.js', '! ./ node_modules/**']) ') prima, quindi gulp-ignore –

risposta

420

rapida

Su src, si può sempre specificare i file da ignorare utilizzando "!".

Esempio (si vuole escludere tutti * .min.js file sul tuo cartella js e sottocartella:.

gulp.src(['js/**/*.js', '!js/**/*.min.js']) 

si può fare anche per i singoli file

risposta Expanded:

Extracted from gulp documentation:

gulp.s rc (globs [, options])

Emette file corrispondenti a glob fornito o a una matrice di glob. Restituisce un flusso di file Vinyl che possono essere reindirizzati ai plug-in.

glob riferisce a nodo-glob sintassi oppure può essere un percorso diretto ai file.

Quindi, guardando a node-glob documentation possiamo vedere che utilizza la libreria di minimatch per fare la sua corrispondenza.

Su minimatch documentation, fanno notare quanto segue:

se il modello inizia con una! carattere, quindi è negato.

E questo è il motivo per cui utilizzando! il simbolo esclude i file/le directory da un'attività inattiva

+10

Non dovrebbe essere evitato? Questo è dalla documentazione di nodo-glob: 'Negazione L'intento per la negazione sarebbe per un modello che inizia con! per abbinare tutto ciò che non corrisponde al modello fornito. Tuttavia, l'implementazione è strana e, per ora, dovrebbe essere evitata. Il comportamento è deprecato nella versione 5 e verrà rimosso completamente nella versione 6. ' –

+2

Ho bisogno di usare:' gulp.src ([/ * file globs * /], {base: "."})' per far funzionare correttamente i glob pattern – Scott

+0

@Scott: sì, ma questo non ha nulla a che fare con questa risposta/domanda – avcajaraville