在gulp中使用文件目录的父目录作为目标
如何在gulp中使用通配符源的文件目录的父目录 源文件:在gulp中使用文件目录的父目录作为目标,gulp,Gulp,如何在gulp中使用通配符源的文件目录的父目录 源文件: |gulpfile.js (just to show where the base is) |elements/foundations/A/js/src/mainA.js |elements/foundations/A/js/src/subA.js |elements/foundations/B/js/src/mainB.js ... |elements/foundations/F/js/src/mainF.js 预期目标/结果: |e
|gulpfile.js (just to show where the base is)
|elements/foundations/A/js/src/mainA.js
|elements/foundations/A/js/src/subA.js
|elements/foundations/B/js/src/mainB.js
...
|elements/foundations/F/js/src/mainF.js
预期目标/结果:
|elements/foundations/A/js/mainA.min.js
|elements/foundations/A/js/subA.min.js
|elements/foundations/B/js/mainB.min.js
...
|elements/foundations/F/js/mainF.min.js
我尝试过不同的方法,但最终没有一种有效
这一个运行时没有错误,但不会生成任何文件
gulp.task('scripts', function () {
return gulp.src('./elements/foundations/**/js/src/*.js', {base: './elements/foundations/**/'})
.pipe(rename({suffix: '.min'}))
// .pipe(uglify()) and others ...
.pipe(gulp.dest('./'))
;
});
这一个生成文件,但直接在src目录中
gulp.task('scripts', function () {
return gulp.src('./elements/foundations/**/js/src/*.js', {base: './elements/foundations/'})
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest('./elements/foundations/'))
;
});
如果我尝试在目的地中使用通配符(**),则gulp最终将进入无限循环(与通配符的位置无关)
我也尝试过在不设置基础的情况下使用它,但结果是相似的 您可以将函数传递到
gulp rename
以进行更复杂的重命名操作。例如,这允许您使用node.js的来操作文件路径:
var gulp = require('gulp');
var rename = require('gulp-rename');
var path = require('path');
gulp.task('scripts', function() {
return gulp.src('./elements/foundations/**/js/src/*.js')
.pipe(rename(function(file) {
file.dirname = path.dirname(file.dirname);
file.basename = file.basename + '.min';
return file;
}))
// .pipe(uglify()) and others ...
.pipe(gulp.dest('./elements/foundations/'))
});
谢谢,我已经试过这个方法了。不幸的是,我在管道连接中遇到了一个新问题(将所有基础/**文件连接到一个最终文件中,这并不是所希望的)。你的解决方案解决了我最初的问题。
var gulp = require('gulp');
var rename = require('gulp-rename');
var path = require('path');
gulp.task('scripts', function() {
return gulp.src('./elements/foundations/**/js/src/*.js')
.pipe(rename(function(file) {
file.dirname = path.dirname(file.dirname);
file.basename = file.basename + '.min';
return file;
}))
// .pipe(uglify()) and others ...
.pipe(gulp.dest('./elements/foundations/'))
});