2016-03-30 19 views
0

Satıcı dosyalarınızı gulp kullanarak dev klasörüme kopyalamaya çalışıyorum. Geliştirme kipindeyken, kopyalanmayan dosyalar kopyalanamazsa, yalnızca kaldırılmamış dosyaları kopyalamak istiyorum. Ve üretim modunda dosyaları varsa, normal dosyaları küçültmek için kopya minifed dosyaları istiyorum.Belirtilen dosyaları gulp kullanarak koşullu kopyalayın

benim klasör yapısı İşte

js 
    app.js 
jquery 
    jquery.min.js 
    jquery.js 
fontawesome 
    fontawesome.min.js 
    fontawesome.min.css 
    fonts.ttf... 

temel ben yazmıştım aman.

var scriptsPath = '../vendor/'; 
function getFolders(dir) { 
    return fs.readdirSync(dir) 
     .filter(function(file) { 
      return fs.statSync(path.join(dir, file)).isDirectory(); 
     }); 
} 
gulp.task('vendor', function() { 
    var folders = getFolders(scriptsPath); 
    var cssFilter = $.filter('**/*.css') 
    var tasks = folders.map(function(folder) { 
     var jsFilter; 
    if (isProduction) { 
     jsFilter = $.filter('**/*.min.js'); 
    } else { 
     jsFilter = $.filter(['**/*.js', '!**/*.min.js']); 
    } 
     return gulp.src(path.join(scriptsPath, '**/')) 
      .pipe(jsFilter) 
      .pipe($.if(useSourceMaps, $.sourcemaps.init())) 
      .pipe($.if(isProduction, $.uglify({preserveComments: 'some'}))) 
      .on('error', handleError) 
      .pipe(jsFilter.restore()) 
      .pipe(cssFilter) 
      .pipe($.if(isProduction, $.minifyCss())) 
      .on('error', handleError) 
      .pipe(cssFilter.restore()) 
      .on('error', handleError) 
      .pipe(gulp.dest(build.vendor.js)); 
    }); 
    return es.concat.apply(null, tasks); 
}); 

ben yudum -eğer & bazı yöntemler kullanılarak son iki gün çalışıyorum. Ama henüz çözümü değil. Teşekkürler.

cevap

1

vendor görevinize çok yol kat etmeye çalışıyorsunuz. JS dosyalarınızla yaptığınız şeyler, CSS dosyalarınızla yaptığınız şeyle tamamen alakasız. Okuması zor. Yerine gulp-filter kullanmanın

vb vendor-js, vendor-css, gibi daha küçük görevler içine bölme vendor deneyin ... ve sonra vendor görev için bağımlılıklar olarak ilan:

gulp.task('vendor', ['vendor-js', 'vendor-css' /* etc ... */]); 

Sizin vendor-js görev sonra aşağıdaki gibi görünebilir :

var glob = require('glob'); 

gulp.task('vendor-js', function() { 

    var js = glob.sync('../vendor/**/*.js'); 

    if (isProduction) { 
    // use <file>.min.js, unless there is only <file>.js 
    js = js.filter(function(file) { 
     return file.match(/\.min\.js$/) || 
     js.indexOf(file.replace(/\.js$/, '.min.js')) < 0; 
    }); 
    } else { 
    // use <file>.js, unless there is only <file>.min.js 
    js = js.filter(function(file) { 
     return !file.match(/\.min\.js$/) || 
     js.indexOf(file.replace(/\.min\.js$/, '.js')) < 0; 
    }); 
    } 

    gulp.src(js, { base: '../vendor' }) 
    .pipe($.if(isProduction,     // only minify for prod and when 
      $.if("!**/*.min.js", uglify()))) // the file isn't minified already 
    .pipe(gulp.dest('build')); 
}); 

Bunu size özel gereksinimlere uyarlamak, bu konu hakkında oldukça önemsiz olmalıdır.

+0

Teşekkürler İyi çalışır. – Sathish

İlgili konular