Gulp.dest () при использовании нескольких шаров - PullRequest
0 голосов
/ 30 апреля 2018

У меня проблемы с glob и gulp.dest (). Моя задача выглядит так

return gulp.src('./clients/*/assets/less/*.less',{ base: process.cwd() })
    .pipe(less({
        paths:[path.join(__dirname, 'less')]
    }).on('error', function(err){
        gutil.log(err);
        this.emit('end');
    }))
    .pipe(autoprefixer({
        browsers: ['last 2 versions'],
        cascade: false
    }))
    .pipe(gulp.dest(function(file){
        return path.normalize(path.join(file.path, '../css'));
    }));

Если мой путь, например, был ./clients/my-client/assets/less/style.less, то в итоге путь будет `./clients/my-client/assets/css/my-client/assets/less/css Я пытался использовать функцию переименования, как

.pipe(rename(function (path) {
    path.dirname = '';
}))

Раньше, но все, что было сделано, это помещало файл в ./clients/css/style.css

Желаемый каталог должен быть ./clients/my-client/assets/less/style.css, и я подумал, что все это будет довольно просто, и, возможно, так оно и есть, но я действительно борюсь. Любая помощь могла бы быть полезна!

1 Ответ

0 голосов
/ 02 мая 2018

Я чувствую, что это не очень хорошее решение, учитывая, как оно теоретически может пойти не так, но сейчас оно работает для меня.

Я использовал gulp-rename, чтобы просто заменить less на css в dirname.

var src = './clients/*/assets/less/*.less';

return gulp.src(src,{base: './clients/'})
    .pipe(plumber())
    .pipe(sourcemaps.init())
    .pipe(less({
        paths:[path.join(__dirname, 'less')]
    }).on('error', function(err){
        gutil.log(err);
        this.emit('end');
    }))
    .pipe(cleanCSS({debug: true}, function(details) {
        console.log(details.name + ': ' + details.stats.originalSize);
        console.log(details.name + ': ' + details.stats.minifiedSize);
    }))
    .pipe(filesize())
    .pipe(rename(function (path) {
        path.dirname = path.dirname.replace(/less/i,'css');
    }))
    .pipe(gulp.dest('./clients/'))
    .pipe(notify({ message: "Style compressed", onLast: true}) );
...