Задача gulp для обработки файлов, доступных для записи

Я использую Gulp в проекте VS2015 для запуска jscs на файлах JavaScript с fix опция установлена. Намерение состоит в том, чтобы изменить тот же самый файл, который читается (то есть, источник и место назначения - то же самое).

var gulp = require('gulp');
var jscs = require('gulp-jscs');
var chmod = require('gulp-chmod');
var exec = require('gulp-exec');

var ourJsFiles = // an array of files and globbed paths 

gulp.task('jscs', function (callback) {
   ourJsFiles.forEach(function (fn) {
      gulp.src(fn, { base: './' })
         .pipe(jscs({
            "preset": "google",
            "maximumLineLength": 160,
            "validateIndentation": 3,
            "fix": true
         }))
         .pipe(gulp.dest('./'));
   });
   callback();
});

Но я не хочу обрабатывать файлы, предназначенные только для чтения. Уже есть способ обнаружить это в Gulp на Windows?

1 ответ

Есть плагин, который позволяет работать с подмножеством файлов: gulp-filter. Один из вариантов - передать функцию фильтра, которая будет получать объект винилового файла, например, вы можете использовать stat.mode свойство того объекта, который имеет разрешения и делает что-то вроде:

var filter = require('gulp-filter');
...
var writableFiles = filter(function (file) {
        //https://github.com/nodejs/node-v0.x-archive/issues/3045
        var numericPermission = '0'+(e.stat.mode & parseInt('777', 8)).toString(8);
        return numericPermission[1]==='6'
    });
...
gulp.src(....)
    .pipe(writableFiles)
Другие вопросы по тегам