Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何将gulp-w3c-css的输出通过管道传输到控制台_Node.js_Gulp_Css Validator - Fatal编程技术网

Node.js 如何将gulp-w3c-css的输出通过管道传输到控制台

Node.js 如何将gulp-w3c-css的输出通过管道传输到控制台,node.js,gulp,css-validator,Node.js,Gulp,Css Validator,当我按照示例进行操作时,我无法在控制台中而不是在输出目录中打印结果 下面比较我如何使用CSSLint和W3C-CSS。我希望函数是相同的 var gulp=require('gulp'), csslint=require('gulp-csslint'), cssvalidate=require('gulp-w3c-css'); 吞咽任务('csslint',()=> gulp.src('testcss/lashjalpen.css') .pipe(csslint('.csslintrc')) .

当我按照示例进行操作时,我无法在控制台中而不是在输出目录中打印结果

下面比较我如何使用CSSLint和W3C-CSS。我希望函数是相同的

var gulp=require('gulp'),
csslint=require('gulp-csslint'),
cssvalidate=require('gulp-w3c-css');
吞咽任务('csslint',()=>
gulp.src('testcss/lashjalpen.css')
.pipe(csslint('.csslintrc'))
.pipe(csslint.reporter())
);
//不起作用
吞咽任务('cssvalid',()=>
gulp.src('testcss/*css')
.pipe(cssvalidate())
//下一行可以,但不是我想要的
.管道(吞咽目的地(“报告”))
//我想我需要让这个结构工作,但我不能
.pipe(gutil.buffer)(函数(err,文件){
如果(错误){
日志('发生错误',err);
}否则{
//不知道该写什么
//文件-验证结果数组(来自手册)
}
}))
);

最好的解决方案是使用一个类似csslint.reporter的reporter函数。

gulp-w3c-css插件将每个文件的验证结果序列化为JSON,并将该JSON存储在属性中。JSON序列化的格式大致如下(有关更多详细信息,请参阅):

因此,您所要做的就是解析JSON,然后以您想要的任何方式将信息记录到控制台

下面是一个简单的示例,说明如何做到这一点:

var gulp = require('gulp');
var cssvalidate = require('gulp-w3c-css');
var gutil = require('gulp-util');
var map = require('map-stream');

gulp.task('cssvalid', function () {
  return gulp.src('testcss/*css')
    .pipe(cssvalidate())
    .pipe(map(function(file, done) {
      if (file.contents.length == 0) {
        console.log('Success: ' + file.path);
        console.log(gutil.colors.green('No errors or warnings\n'));
      } else {
        var results = JSON.parse(file.contents.toString());
        results.errors.forEach(function(error) {
          console.log('Error: ' + file.path + ': line ' + error.line);
          console.log(gutil.colors.red(error.message) + '\n');
        });
        results.warnings.forEach(function(warning) {
          console.log('Warning: ' + file.path + ': line ' + warning.line);
          console.log(gutil.colors.yellow(warning.message) + '\n');
        });
      }
      done(null, file);
    }));
});

我使用了而不是,以便在每个文件可用时立即打印结果,而不是在最后打印所有内容。

gulp-w3c-css插件将每个文件的验证结果序列化为JSON,并将该JSON存储在属性中。JSON序列化的格式大致如下(有关更多详细信息,请参阅):

因此,您所要做的就是解析JSON,然后以您想要的任何方式将信息记录到控制台

下面是一个简单的示例,说明如何做到这一点:

var gulp = require('gulp');
var cssvalidate = require('gulp-w3c-css');
var gutil = require('gulp-util');
var map = require('map-stream');

gulp.task('cssvalid', function () {
  return gulp.src('testcss/*css')
    .pipe(cssvalidate())
    .pipe(map(function(file, done) {
      if (file.contents.length == 0) {
        console.log('Success: ' + file.path);
        console.log(gutil.colors.green('No errors or warnings\n'));
      } else {
        var results = JSON.parse(file.contents.toString());
        results.errors.forEach(function(error) {
          console.log('Error: ' + file.path + ': line ' + error.line);
          console.log(gutil.colors.red(error.message) + '\n');
        });
        results.warnings.forEach(function(warning) {
          console.log('Warning: ' + file.path + ': line ' + warning.line);
          console.log(gutil.colors.yellow(warning.message) + '\n');
        });
      }
      done(null, file);
    }));
});

我使用了而不是,以便在每个文件的结果可用时立即打印,而不是在最后打印所有内容。

您可以使用此解决方案吗?你能用这个解决方案吗?感谢您的回答,我能够为HTML验证程序编写类似的函数。但是,使用gulp.watch调用它们时没有输出。看我的。但这可能是一个单独的问题。由于您的回答,我能够为HTML验证程序编写类似的函数。但是,使用gulp.watch调用它们时没有输出。看我的。但这可能是另一个问题。