Начало наработок
This commit is contained in:
119
node_modules/bs-snippet-injector/index.js
generated
vendored
Normal file
119
node_modules/bs-snippet-injector/index.js
generated
vendored
Normal file
@ -0,0 +1,119 @@
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
|
||||
/**
|
||||
* @type {string}
|
||||
*/
|
||||
var PLUGIN_NAME = "Snippet Injector";
|
||||
|
||||
/**
|
||||
* @type
|
||||
*/
|
||||
var messages = {
|
||||
added: function (path) {
|
||||
return "{green:Snippet added to {cyan:" + path
|
||||
},
|
||||
removed: function (path) {
|
||||
return "{green:Snippet removed from {cyan:" + path
|
||||
},
|
||||
exists: function (path) {
|
||||
return "{green:Snippet already exists in: {cyan:" + path
|
||||
},
|
||||
notFound: function (path) {
|
||||
return "{red:ERROR:} Closing body tag not found in: {cyan:" + path
|
||||
},
|
||||
fileNotFound: function (path) {
|
||||
return "{red:ERROR:} File not found!: {cyan:" + path
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Main export
|
||||
* @type {{name: string, plugin: plugin}}
|
||||
*/
|
||||
module.exports = {
|
||||
|
||||
"plugin:name": PLUGIN_NAME,
|
||||
|
||||
plugin: function (opts, bs) {
|
||||
|
||||
opts.file = opts.file || "";
|
||||
|
||||
opts.currentFilePath = path.resolve(opts.file);
|
||||
|
||||
opts.logger = bs.getLogger(PLUGIN_NAME);
|
||||
opts.logger.debug("Setting events");
|
||||
|
||||
bs.events.on("service:running", addSnippet.bind(null, bs, opts));
|
||||
bs.events.on("service:exit", removeSnippet.bind(null, bs, opts));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Add the snippet before a body tag
|
||||
* @param {BrowserSync} bs
|
||||
* @param {Object} opts - plugin specific options
|
||||
*/
|
||||
function addSnippet(bs, opts) {
|
||||
|
||||
var currentFilePath = opts.currentFilePath;
|
||||
|
||||
opts.logger.debug("Reading the file: %s", currentFilePath);
|
||||
|
||||
var read;
|
||||
|
||||
try {
|
||||
read = fs.readFileSync(currentFilePath, "utf8");
|
||||
} catch (e) {
|
||||
opts.errored = true;
|
||||
return opts.logger.info(messages.fileNotFound(path.basename(currentFilePath)));
|
||||
}
|
||||
|
||||
var found = false;
|
||||
|
||||
if (read.indexOf(bs.options.get("snippet")) > -1) {
|
||||
opts.logger.info(messages.exists(currentFilePath));
|
||||
return;
|
||||
}
|
||||
|
||||
var modded = read.replace(/<\/body>(?![\s\S]*<\/body>)/, function () {
|
||||
opts.currentSnippet = wrap(bs.options.get("snippet")) + "\n" + arguments[0];
|
||||
found = true;
|
||||
return opts.currentSnippet;
|
||||
});
|
||||
|
||||
if (found) {
|
||||
opts.logger.debug("Writing the file: %s", currentFilePath);
|
||||
fs.writeFileSync(currentFilePath, modded);
|
||||
opts.logger.info(messages.added(path.basename(currentFilePath)));
|
||||
} else {
|
||||
opts.logger.info(messages.notFound(path.basename(currentFilePath)));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param item snippet
|
||||
* @returns {string}
|
||||
*/
|
||||
function wrap (item) {
|
||||
return "<!-- BS:SNIPPET-->" + item + "<!-- BS:SNIPPET:END-->";
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {BrowserSync} bs
|
||||
* @param {Object} opts - plugin specific options
|
||||
*/
|
||||
function removeSnippet(bs, opts) {
|
||||
|
||||
if (opts.errored) {
|
||||
return;
|
||||
}
|
||||
|
||||
var read = fs.readFileSync(opts.currentFilePath, "utf8");
|
||||
var modded = read.replace(opts.currentSnippet, function () {
|
||||
return "</body>";
|
||||
});
|
||||
fs.writeFileSync(opts.currentFilePath, modded);
|
||||
opts.logger.info(messages.removed(path.basename(opts.currentFilePath)));
|
||||
}
|
||||
Reference in New Issue
Block a user