Задача 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)