前端代码
This commit is contained in:
80
node_modules/browser-sync/dist/public/stream.js
generated
vendored
Normal file
80
node_modules/browser-sync/dist/public/stream.js
generated
vendored
Normal file
@ -0,0 +1,80 @@
|
||||
"use strict";
|
||||
var path = require("path");
|
||||
var micromatch = require("micromatch");
|
||||
var utils = require("./public-utils");
|
||||
/**
|
||||
* @param emitter
|
||||
* @returns {Function}
|
||||
*/
|
||||
module.exports = function (emitter) {
|
||||
/**
|
||||
* Return a transform/through stream that listens to file
|
||||
* paths and fires internal Browsersync events.
|
||||
* @param {{once: boolean, match: string|array}} [opts]
|
||||
* @returns {Stream.Transform}
|
||||
*/
|
||||
function browserSyncThroughStream(opts) {
|
||||
opts = opts || {};
|
||||
var emitted = false;
|
||||
var Transform = require("stream").Transform;
|
||||
var reload = new Transform({ objectMode: true });
|
||||
var changed = [];
|
||||
reload._transform = function (file, encoding, next) {
|
||||
var stream = this;
|
||||
/**
|
||||
* End is always called to send the current file down
|
||||
* stream. Browsersync never acts upon a stream,
|
||||
* we only `listen` to it.
|
||||
*/
|
||||
function end() {
|
||||
stream.push(file); // always send the file down-stream
|
||||
next();
|
||||
}
|
||||
/**
|
||||
* If {match: <pattern>} was provided, test the
|
||||
* current filepath against it
|
||||
*/
|
||||
if (opts.match) {
|
||||
if (!micromatch(file.path, opts.match, { dot: true }).length) {
|
||||
return end();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* if {once: true} provided, emit the reload event for the
|
||||
* first file only
|
||||
*/
|
||||
if (opts.once === true && !emitted) {
|
||||
utils.emitBrowserReload(emitter);
|
||||
emitted = true;
|
||||
}
|
||||
else {
|
||||
// handle multiple
|
||||
if (opts.once === true && emitted) {
|
||||
}
|
||||
else {
|
||||
if (file.path) {
|
||||
emitted = true;
|
||||
utils.emitChangeEvent(emitter, file.path, false);
|
||||
changed.push(path.basename(file.path));
|
||||
}
|
||||
}
|
||||
}
|
||||
end();
|
||||
};
|
||||
/**
|
||||
* When this current operation has finished, emit the
|
||||
* steam:changed event so that any loggers can pick up it
|
||||
* @param next
|
||||
* @private
|
||||
*/
|
||||
reload._flush = function (next) {
|
||||
if (changed.length) {
|
||||
utils.emitStreamChangedEvent(emitter, changed);
|
||||
}
|
||||
next();
|
||||
};
|
||||
return reload;
|
||||
}
|
||||
return browserSyncThroughStream;
|
||||
};
|
||||
//# sourceMappingURL=stream.js.map
|
Reference in New Issue
Block a user