webpage
Version:
Webpage Boilerplate Component
106 lines (95 loc) • 5.21 kB
JavaScript
/******************************************************************************
DEPENDENCIES
******************************************************************************/
var _config = require('_config');
/******************************************************************************
PARAMETER = ARGUMENT
******************************************************************************/
// no cli tool
/******************************************************************************
EXPORT
******************************************************************************/
module.exports = boilerplate;
/******************************************************************************
EXECUTION
******************************************************************************/
var config = _config();
function boilerplate (parameter) {
var $title = config['title'];
var $description = config['description'];
var $keywords = config['keywords'];
var $author = config['author'];
var $website = config['website'];
var $style = config['style'];
var $logoURL = undefined;
var $googleAnalytics = undefined;
if (parameter) {
$title = parameter.title || $title;
$description = parameter.description || $description;
$keywords = parameter.keywords || $keywords;
$author = parameter.author || $author;
$website = parameter.website || $website;
$style = parameter.style || $style;
$logoURL = parameter.logoURL || $logoURL;
$googleAnalytics = parameter.ga || $googleAnalytics;
}
var title = ['<title>'+$title+'</title>'];
var meta = [
'<meta charset="utf-8">',
'<meta name="format-detection" content="telephone=no" />',
'<meta name="msapplication-tap-highlight" content="no" />',
'<meta name="description" content="'+$description+'">',
'<meta name="keywords" content="'+$keywords+'">',
'<meta name="author" content="'+$author+'">',
'<meta name="viewport" content="width=device-width, initial-scale = 1.0, user-scalable=no">'
];
var og = [
'<meta property="og:title" content="'+$title+'" />',
'<meta property="og:site_name" content="'+$title+'" />',
'<meta property="og:url" content="'+$website+'" />',
'<meta property="og:description" content="'+$description+'" />',
'<meta property="og:image" content="'+$logoURL+'" />',
];
var icon = [ // check item generator
'<link rel="apple-touch-icon" sizes="57x57" href="logo/favicon/apple-touch-icon-57x57.png">',
'<link rel="apple-touch-icon" sizes="60x60" href="logo/favicon/apple-touch-icon-60x60.png">',
'<link rel="apple-touch-icon" sizes="72x72" href="logo/favicon/apple-touch-icon-72x72.png">',
'<link rel="apple-touch-icon" sizes="76x76" href="logo/favicon/apple-touch-icon-76x76.png">',
'<link rel="apple-touch-icon" sizes="114x114" href="logo/favicon/apple-touch-icon-114x114.png">',
'<link rel="apple-touch-icon" sizes="120x120" href="logo/favicon/apple-touch-icon-120x120.png">',
'<link rel="apple-touch-icon" sizes="144x144" href="logo/favicon/apple-touch-icon-144x144.png">',
'<link rel="icon" type="image/png" href="logo/favicon/favicon-32x32.png" sizes="32x32">',
'<link rel="icon" type="image/png" href="logo/favicon/favicon-96x96.png" sizes="96x96">',
'<link rel="icon" type="image/png" href="logo/favicon/favicon-16x16.png" sizes="16x16">',
'<link rel="manifest" href="logo/favicon/manifest.json">',
'<meta name="msapplication-TileColor" content="#b91d47">',
'<meta name="msapplication-TileImage" content="logo/favicon/mstile-144x144.png">',
'<meta name="theme-color" content="#ffffff">',
'<link rel="shortcut icon" type="image/x-icon" href="SOURCE/favicon.ico">',
'<link rel="icon" type="image/png" href="SOURCE/reinventingengagement.png">'
];
var style = [
'<link rel="stylesheet" type="text/css" href="' + $style + '" />'
];
var google = $googleAnalytics ? [
"<script>",
"(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){",
"(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),",
"m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)",
"})(window,document,'script','//www.google-analytics.com/analytics.js','ga');",
"ga('create', '" + $googleAnalytics + "', 'auto');",
"ga('send', 'pageview');",
"</script>"]
:[];
var head = title.concat(meta).concat(og)/*.concat(icon)*/.concat(style);
var body = google/*.concat(...)*/;
var htmlTag = document.querySelector('html');
var headTag = document.querySelector('head');
var bodyTag = document.querySelector('body');
htmlTag.setAttribute('lang','en');
headTag.innerHTML = head.join('');
var tmp, temp = document.createElement('div');
temp.innerHTML = body.join('');
while (tmp = temp.childNodes[0]) { bodyTag.appendChild(tmp); }
return bodyTag;
};