gpt4 book ai didi

javascript - 为什么 vinyl.isVinyl() 对于 gulp 发出的乙烯基文件返回 false?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:42:35 28 4
gpt4 key购买 nike

我正在学习 gulp 源代码并尝试编写一个 gulp 插件。

现在我对一件事感到困惑。

下面是我的插件代码:

module.exports = function(){
return through2.obj(function(file,encode,callback){
console.log(vinyl.isVinyl(file));//false
console.log(file._isVinyl) // undefined

// the reason ? file is not Object of vinyl ? file's property of '_isVinyl' is undefine ?

if(file.isNull()){
callback(null,file);
}
if(file.isStream()){
file.contents = file.contents.pipe(through2(function(chuck,encode,callback){
if(util.isNull(chuck)){
callback(null, chuck);
}
if(util.isBuffer(chuck)){
chuck = new Buffer(String(chuck)
.replace(commentReg, '')
.replace(blankSpaceReg,''))
}
callback(null,chuck);
}));
}
if(file.isBuffer()){
file.contents = new Buffer(String(file.contents)
.replace(commentReg, '')
.replace(blankSpaceReg,''));
}
callback(null,file);
})
}

这是 gulp 源代码的一部分,其中 vinyl文件被创建:

https://github.com/gulpjs/vinyl-fs/blob/master/lib/src/wrap-with-vinyl-file.js

我的困惑:

transformFunction使用 though2.obj() 注册会收到一个 file 对象,该对象应该是一个 vinyl 文件。

为什么 vinyl.isVinyl() 返回 false

为什么 file 对象没有 _isVinyl 属性?

最佳答案

这是关于你在 Github 上查看哪个版本的 vinyl-fsvinyl 以及哪个版本的 vinyl-fsvinyl 您的本地 gulp 安装正在使用。

您可能从 npmjs.com 安装了 gulp通过键入:

$ npm install --save-dev gulp

当前安装的是 3.9.1 版的 gulp。您可以使用 npm ls 查看 3.9.1 版本的 gulp 依赖于哪些版本的 vinyl-fsvinyl .这是该命令的(缩写)输出:

└─┬ gulp@3.9.1
└─┬ vinyl-fs@0.3.14
└─┬ vinyl@0.4.6

所以 gulp@3.9.1 依赖于 vinyl-fs@0.3.14vinyl-fs@0.3.14 依赖于 vinyl@0.4.6.

以下是 GitHub 上这些版本的链接:

https://github.com/gulpjs/vinyl-fs/tree/v0.3.14
https://github.com/gulpjs/vinyl/tree/v0.4.6

正如您在 GitHub 上看到的那样,vinyl@0.4.6 具有 ._isVinyl 属性。只有较新的版本,如 vinyl@1.2.0 have this property .

由于 gulp@3.9.1 使用 vinyl@0.4.6 发出乙烯基文件,因此 gulp 安装发出的乙烯基文件没有 ._isVinyl 属性。这就是 vinyl.isVinyl() 函数在您的示例中返回 false 的原因。

当前development version for the upcoming gulp 4.0使用 vinyl@1.2.0 。如果你要 install that version of gulp您示例中的 vinyl.isVinyl() 调用将返回 true

关于javascript - 为什么 vinyl.isVinyl() 对于 gulp 发出的乙烯基文件返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39149917/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com