我想把我的拼写检查结果放到控制台而不是一个文件,我认为这应该工作,因为我明白它gulp返回一个流。
TypeError: Object #<Stream> has no method 'read'
这是我的代码
gulp.task('spellcheck',function() { var patterns = [{ // Strip tags from HTML pattern: /(<([^>]+)>)/ig,replacement: '' }]; var spellSuggestions = [{ pattern: / [^ ]+? \(suggestions:[A-z,']+\)/g,replacement: function(match) { return '<<<' + match + '>>>'; } }]; var nonSuggestions = [{ pattern: /<<<.+>>>|([^\s]+[^<]+)/g,replacement: function(match) { if (match.indexOf('<') == 0) { return '\n' + match + '\n'; } return ''; } }]; var toConsole = gulp.src('./_site/**/*.html') .pipe(frep(patterns)) .pipe(spellcheck()) .pipe(frep((spellSuggestions))) .pipe(frep((nonSuggestions))); var b = toConsole.read(); console.log(b); });
解决方法
流上没有读取方法。你有两个选择:
>使用实际的控制台流:process.stdout
>使用data event到console.log。
在代码中实现:
gulp.task('spellcheck',function () { var patterns = [ { // Strip tags from HTML pattern: /(<([^>]+)>)/ig,replacement: '' }]; var nonSuggestions = [ { pattern: /<<<.+>>>|([^\s]+[^<]+)/g,replacement: function(match) { if (match.indexOf('<')==0) { return '\n' + match +'\n'; } return ''; } }]; var a = gulp.src('./_site/**/*.html') .pipe(frep(patterns)) .pipe(spellcheck(({replacement: '<<<%s (suggestions: %s)>>>'}))) .pipe(frep(nonSuggestions)) ; a.on('data',function(chunk) { var contents = chunk.contents.toString().trim(); var bufLength = process.stdout.columns; var hr = '\n\n' + Array(bufLength).join("_") + '\n\n' if (contents.length > 1) { process.stdout.write(chunk.path + '\n' + contents + '\n'); process.stdout.write(chunk.path + hr); } }); });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。