javascript - Gulp:如何设置相对于已处理文件的目标文件夹(使用通配符时)?

标签 javascript node.js gulp

在我的 assets/ 文件夹下,我有许多子文件夹,每个子文件夹都包含任意数量的图像,如下所示:

assets/article1/
assets/article2/

我正在尝试编写一个 gulp 任务来定位其中的所有 .jpg 图像并生成它们的缩略图版本,以保存在文件夹内的 thumbs/ 子文件夹中每个文件所在的位置:

assets/article1/               # original jpg images
assets/article1/thumbs/        # thumbnail versions of above..
assets/article2/
assets/article2/thumbs/

我一直在尝试各种方法,但没有运气。我最接近的是:

gulp.task('thumbs', function () {
    return gulp.src( './assets/**/*.jpg' )
        .pipe( imageResize( { width: 200 } ) )
        .pipe( gulp.dest( function( file ) { return file.base + '/thumbs/'; } ) );
});

但是,这会在 assets\

的根目录下创建一个 thumbs\ 文件夹
assets/article1/
assets/article2/
assets/thumbs/article1/
assets/thumbs/article2/

在任何地方都有关于路径和通配符的好信息吗?显然我处理得不好..

最佳答案

您可以为此使用 path.dirname:http://nodejs.org/api/path.html#path_path_dirname_p

// require core module
var path = require('path');

gulp.task('thumbs', function () {
    return gulp.src( './assets/**/*.jpg' )
        .pipe( imageResize( { width: 200 } ) )
        .pipe( gulp.dest( function( file ) { return path.join(path.dirname(file.path), 'thumbs'); } ) );
});

关于javascript - Gulp:如何设置相对于已处理文件的目标文件夹(使用通配符时)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28838091/

相关文章:

node.js - KrakenJS 禁用 session

javascript - gulp-sass 与 Gulp 4.0 和 gulp-cli 4.0 不管道 css

javascript - 防止 gulp uglify 剥离 es6

javascript - html/javascript : using a variable as url for <a href>

javascript - 我怎样才能找到一个数字的长度?

javascript - 如何通过让代码认为它正在主页上加载来在网站上加载 javascript 代码?

javascript - node.js 文件写入位置参数不起作用

javascript - jQuery Flexigrid 隐藏列下拉

javascript - Axios 与请求

gulp - 实习测试框架是否有任何 gulp 插件或文档可以与 gulp 集成?