Gulp任务处理可写文件

gulp task to process files that are writable

本文关键字:文件 任务处理 Gulp      更新时间:2023-09-26

我在VS2015项目中使用Gulp在JavaScript文件上运行带有fix选项集的jscs。目的是修改被读取的同一个文件(即,源和目标是相同的)。

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上?

有一个插件可以让你处理文件子集: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)