2016-09-19 6 views
0

Ich erstelle ein Build-Skript für eine Knoten-App.Gulp src glob: mehrere Dateien Muster stimmen nicht überein

Ich hatte ein Powershell (PSake) -Skript erstellt, aber jetzt muss ich es nach Gulp portieren, weil ich es auf dem Mac ausführen muss.

Grundsätzlich kopiere ich die Quellen irgendwo und bereinige sie (entfernen Sie alle unnötigen Dateien wie readme & Zeug), um ein Paket zu erstellen, das auf Client-PCs installiert wird, also möchte ich die Dateinummer so klein wie möglich halten.

In einem Ort, mein Powershell sieht wie folgt aus:

Get-ChildItem "$srcout\node_modules\" -Recurse | ? { 
    $_.FullName -match "\\\.bin\\" ` 
     -or $_.Name -match "[\w]+\.md$" ` 
     -or $_.Name -match "licen[c|s]e" ` 
     -or $_.Name -match "authors" ` 
     -or $_.Name -match "bower.json" ` 
     -or $_.Name -match "gruntfile\.js" ` 
     -or $_.Name -match "makefile" ` 
     -or $_.Name -match "cakefile" 
    } | % { 
     Remove-Item "$($_.FullName)" -Force -Recurse 
    } 

Bisher habe ich dies für Gulp geschrieben haben:

var pump = require('pump'); 
var through = require('through2'); 

    pump([ 
     gulp.src([ 
      '**/node_modules/**/.bin/', 
      '**/node_modules/**/*.md', 
      '**/node_modules/**/licen+(s|c)e*', 
      '**/node_modules/**/author*', 
      '**/node_modules/**/bower.json', 
      '**/node_modules/**/gruntfile.js', 
      '**/node_modules/**/makefile', 
      '**/node_modules/**/cakefile' 
     ], { 
      cwd: srcout, 
      nocase: true 
     }), 
     through.obj(function(f, e, cb) { 

      if (fs.statSync(f.path).isFile()) { 
       fs.unlinkSync(f.path); 
      } else { 
       rmdir.sync(f.path); 
      } 

      cb(null, f); 
     }) 
    ], 
    done); 

Die /.bin/ und *.md Klackse arbeiten gut, aber der Rest nichts finden ...

Was vermisse ich oder mache ich falsch?

Danke

Antwort

0

ich die glob durch einen fs-extrawalk Anruf ersetzt haben, aber es gibt keine Antwort wirklich, warum die glob funktioniert nicht.

var fs = require('fs-extra'); 

gulp.task('cleanupapp', [ 'build' ], function(done) { 
    fs.walk(path.join(srcout, 'node_modules')) 
    .on('data', function (item) { 

     // normalize folder paths (win/mac) 
     var f = item.path.replace('/', '\\'); 

     if (f.match(/\\.bin\\/i) || 
      f.match(/\.md$/i) || 
      f.match(/licen[c|s]e/i) || 
      f.match(/author[s]?/i) || 
      f.match(/bower\.json$/i) || 
      f.match(/gruntfile\.js$/i) || 
      f.match(/makefile$/i) || 
      f.match(/cakefile$/i)) { 

      if (fs.accessSync(f, fs.W_OK)) { 
       fs.removeSync(f); 
      } 
     } 
    }) 
    .on('end', function() { 
     done(); 
    }); 
}); 
Verwandte Themen