我正在使用gulp-contains检查特定的字符串,如果找到了该字符串,我想抛出诸如“在文件abc中找到字符串”之类的错误。文件参数包含整个包含文件名+缓冲区的对象,但是我不知道如何从gulp中的文件对象中提取文件名?
.pipe(contains({
search: 'myString',
onFound: function (string, file, cb) {
console.log(file);
var error = 'Your file "' + file + '" contains "' + string + '", it should not.';
cb(new gutil.PluginError('gulp-contains', error));
}
}))
现在,此行给出的输出为“您的文件[object Object]包含someString,但不应包含”。 同样console.log(file)记录输出,例如
<File "myFile.js" <Buffer 66 75 6e 63 74 69 6f 6e 20 28 75 73 65 72 2c 20 63 6f 6e 74 65 78 74 2c 20 63 61 6c 6c 62 61 63 6b 29 20 7b 0d 0a 20 20 20 20 63 6f 6e 73 6f 6c 65 2e ... >>
我只想要“ myFile.js”部分,因此我的输出字符串将是“您的文件myFile.js包含someString,但不应包含”
答案 0 :(得分:1)
这里的文件是Node.js中的文件对象。您可以使用 file.path
获取路径.pipe(contains({
search: 'myString',
onFound: function (string, file, cb) {
console.log(file);
var sFile = require('path').parse(file.path).base;
var error = 'Your file "' + sFile + '" contains "' + string + '", it should not.';
cb(new gutil.PluginError('gulp-contains', error));
}
}))