2016-09-19 6 views
0

Я создаю скрипт сборки для приложения Node.Gulp src glob: несколько шаблонов файлов не соответствуют

Я создал сценарий Powershell (PSake), но теперь мне нужно перенести его в Gulp, потому что мне нужно запустить его на Mac.

В основном, я копирую источники где-то и очищаю их (удаляю все ненужные файлы, такие как readme &), чтобы создать пакет, который будет установлен на клиентских ПК, поэтому я хочу, чтобы номер файла был как можно меньше.

В одном месте, мой Powershell выглядит следующим образом:

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 
    } 

До сих пор я написал это для Глоток:

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

В /.bin/ и *.md шарики работают отлично, а остальное делать не находите ничего ...

Что мне не хватает или что-то не так?

Спасибо

ответ

0

я заменил Glob на fs-extrawalk вызова, но это не реально ответить, почему Glob не работает.

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

 Смежные вопросы

  • Нет связанных вопросов^_^