Javascript 使用流创建插件gulp
我在json文件中创建了发送json数据的插件 但我不明白为什么在管道中发送我的对象json,而不直接在插件中编写文件 我想使用以下语法的插件:Javascript 使用流创建插件gulp,javascript,json,plugins,gulp,Javascript,Json,Plugins,Gulp,我在json文件中创建了发送json数据的插件 但我不明白为什么在管道中发送我的对象json,而不直接在插件中编写文件 我想使用以下语法的插件: gulp.task('js-hash', function() { // Get all js in redis gulp.src('./build/js/**/*.js') .pipe(getHashFile('/build/js/')) .pipe(gulp.dest('./build/js/hash.
gulp.task('js-hash', function()
{
// Get all js in redis
gulp.src('./build/js/**/*.js')
.pipe(getHashFile('/build/js/'))
.pipe(gulp.dest('./build/js/hash.json'));
});
而不是:
gulp.task('js-hash', function()
{
// Get all js in redis
gulp.src('./build/js/**/*.js')
.pipe(getHashFile('./build/js/hash.json', '/build/js/'));
});
这是我的插件:
var through = require('through2');
var gutil = require('gulp-util');
var crypto = require('crypto');
var fs = require('fs');
var PluginError = gutil.PluginError;
// Consts
const PLUGIN_NAME = 'get-hash-file';
var json = {};
function getHashFile(filename, basename)
{
if (!filename) {
throw PluginError(PLUGIN_NAME, "Missing filename !");
}
// Creating a stream through which each file will pass
var stream = through.obj(function (file, enc, callback) {
if (file.isNull()) {
this.push(file); // Do nothing if no contents
return callback();
}
if (file.isBuffer()) {
var hash = crypto.createHash('sha256').update(String(file.contents)).digest('hex');
json[file.path.replace(file.cwd+basename, '')] = hash;
return callback();
}
if (file.isStream()) {
this.emit('error', new PluginError(PLUGIN_NAME, 'Stream not supported!'));
return callback();
}
}).on('finish', function () {
fs.writeFile(filename, JSON.stringify(json), function(err) {
if (err) {
throw err;
}
});
});
// returning the file stream
return stream;
}
// Exporting the plugin main function
module.exports = getHashFile;
你的想法是没有什么能阻止你这么做。。。而且 用户实际上假设一个插件将流式传输文件,并且可以通过管道将文件传输到其他插件 如果我没有弄错代码,那么您正在尝试生成一个包含所有入站文件sha哈希的文件。为什么不让用户把这个文件传送到其他插件呢?你会惊讶于人们能做什么
虽然这个问题看起来有点基于观点,但您肯定可以将重点放在如何处理可能不属于主流文件的文件上。像这样的问题可以在许多插件中找到;例如,.没有任何东西可以阻止您这样做。。。而且 用户实际上假设一个插件将流式传输文件,并且可以通过管道将文件传输到其他插件 如果我没有弄错代码,那么您正在尝试生成一个包含所有入站文件sha哈希的文件。为什么不让用户把这个文件传送到其他插件呢?你会惊讶于人们能做什么 虽然这个问题看起来有点基于观点,但您肯定可以将重点放在如何处理可能不属于主流文件的文件上。像这样的问题可以在许多插件中找到;例如