2017-05-08 95 views
1

我正在運行一個gulp任務來縮小和移動JS文件。設置與源文件夾不同的目標文件夾結構

var js_modules  = 'application/modules/**/assets/js/*.js'; 
var js_dist_modules = 'assets/js/modules/'; 

gulp.task('dev_scripts', function() { 
    return gulp.src(js_modules) 
     .pipe(plumber()) 
     .pipe(uglify()) 
     .pipe(gulp.dest(js_dist_modules)); 
}); 

通過此任務的輸出是:

來源:

application/modules/users/assets/js/users.js 
application/modules/menu/assets/js/menu.js 

目的地:

assets/js/modules/users/assets/js/users.js 
assets/js/modules/menu/assets/js/menu.js 

而且我要的目標是:

assets/js/modules/users/users.js 
assets/js/modules/menu/menu.js 

我該如何做到這一點?

回答

0

我用gulp-rename

var rename = require('gulp-rename'); 

var js_modules  = 'application/modules/**/assets/js/*.js'; 
var js_dist_modules = 'assets/js/modules/'; 

gulp.task('dev_scripts', function() { 
    return gulp.src(js_modules) 
    .pipe(plumber()) 
    .pipe(uglify()) 
    .pipe(rename(function(file) { 
     file.dirname = js_dist_modules + file.basename; 
    })) 
    .pipe(gulp.dest(.)); 
}); 
0

使用gulp-flatten出現這樣的事情可能工作(未經測試):

var flatten= require('gulp-flatten); 

var js_modules  = 'application/modules/**/assets/js/*.js'; 
var js_dist_modules = 'assets/js/modules/'; 

gulp.task('dev_scripts', function() { 
    return gulp.src(js_modules) 
    .pipe(plumber()) 
    .pipe(uglify()) 
    .pipe(flatten({ subPath: [2, 1] } )) 
    .pipe(gulp.dest(js_dist_modules)); 
}); 

您可以與子路徑的數字播放,以獲得第三(2)或無論你想要哪個子目錄。

這個答案是更普遍比以前使用的情況下,重命名你想要的目錄 - 在你的情況下,水珠** - 是不一樣的文件的基本名稱。