如何让gulp.dest动态

时间:2014-04-16 10:23:15

标签: coffeescript gulp node.js-stream

我正在学习使用gulp.I采取了一个例子,我尝试根据名称复制文件,如果奇怪的话将其移动到奇数文件夹,否则将其移动到偶数。但有些目标文件夹搞砸了。这是文件夹结构和代码。

1
--my
----new
-----2.txt
----1.txt
----2.txt


    g = gulp.src '**/*.txt', cwd: '1'
    g.pipe map (file,cb)->
        filename = path.basename file.path, path.extname(file.path)
        if filename % 2 
            dest = 'odd'
        else 
            dest = 'even' 
        debugger
        console.log 'destination ',dest
        g.pipe gulp.dest dest
        cb null,file

它正在将偶数文件名复制到奇数文件夹。它是关于记住的目标文件夹(我认为关闭)

1 个答案:

答案 0 :(得分:0)

如果你真的只有两个输出目的地,最简单的解决方案可能是使用the gulp-if plugin,就像这样(我不使用CoffeeScript,所以你必须自己转换):

var _if = require('gulp-if');

function fileIsOdd(file) {
    return path.basename(file.path, path.extname(file.path)) % 2;
}

// in your task
gulp.src('**/*.txt', {cwd: '1'})
    .pipe(_if(fileIsOdd, gulp.dest('odd'), gulp.dest('even')))

这样做是使用fileIsOdd函数处理单个文件。如果函数返回truthy值,则处理第一个参数,否则处理第二个参数。