Я учусь создавать плагины gulp и просто немного поиграюсь.Я пытаюсь создать плагин, который удаляет голосовые буквы из содержимого файла.Вроде бы просто, но я сталкиваюсь с ошибкой при установке свойства содержимого выходного винила.Ошибка говорит:
Error: File.contents can only be a Buffer, a Stream, or null
Я нырнул в виниловый код на github и обнаружил, что при установке свойство проверяет, является ли значение Поток , Буфер или null , чтобы выдать эту ошибку.
Я следовал этому правилу и создал значение моего содержимого из метода Buffer.from
.Я предположил, что этого достаточно, но та же ошибка все еще появляется.Итак, я погрузился в виниловый код в поисках этой проверки и обнаружил, что она использует метод Buffer.isBuffer
.Следующим шагом была запись в консоль, если мое значение контента действительно является экземпляром буфера, и обнаружил это:
var Buffer = require('Buffer').Buffer;
var Vinyl = require('vinyl');
# stuff for creating gulp plugin
var vinylInstance = // stuff for creating vinyl file.
var content = Buffer.from(new String('this is my content'));
# check if content is an array
console.log(Buffer.isBuffer(content)); // console shows true
console.log(vinylInstance.isBuffer(content)); // console shows false
Теперь я застрял на этом этапе и не знаю, как это реализовать.Я гуглил много раз, и все статьи, посты, ответы и т. Д. Обнаружили, что построение свойства содержимого происходит так же, как и я.Вот мой код:
var removeLetters = new stream.Transform({
readableObjectMode: true,
writableObjectMode: true,
transform: function(chunk, encoding, callback) {
var contents = Buffer.from(chunk.contents.toString());
var file = new vinyl({
base: chunk.base,
path: chunk.base + '/transform.js',
contents: Buffer.from(chunk.contents.toString().replace(/aeiou/gi).trim()),
});
this.push(file);
callback();
}
});
Может кто-нибудь помочь узнать, что я делаю не так?
Заранее спасибо.