UNPKG

@umijs/plugins

Version:
121 lines (119 loc) 3.47 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/analytics.ts var analytics_exports = {}; __export(analytics_exports, { default: () => analytics_default }); module.exports = __toCommonJS(analytics_exports); var analytics_default = (api) => { const GA_KEY = process.env.GA_KEY; const GA_V2_KEY = process.env.GA_V2_KEY; const enableBy = (opts) => { return opts.config.analytics || GA_KEY; }; api.describe({ key: "analytics", config: { schema({ zod }) { return zod.object({ baidu: zod.string(), ga: zod.string(), ga_v2: zod.string() }).partial(); }, onChange: api.ConfigChangeType.reload }, enableBy }); const baiduTpl = (code) => { return ` (function() { var hm = document.createElement('script'); hm.src = '//hm.baidu.com/hm.js?${code}'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(hm, s); })(); `; }; const gaTpl = (code) => { return ` (function(){ if (!location.port) { (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', '${code}', 'auto'); ga('send', 'pageview'); } })(); `; }; const gaV2Tpl = (code) => { return ` window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '${code}'); `.trim(); }; api.addHTMLHeadScripts(() => { const analytics = api.config.analytics || {}; const { baidu, ga = GA_KEY, ga_v2 = GA_V2_KEY } = analytics; const scripts = []; if (baidu) { scripts.push({ content: "var _hmt = _hmt || [];" }); } if (api.env !== "development") { if (baidu) { scripts.push({ content: baiduTpl(baidu) }); } if (ga) { scripts.push({ content: gaTpl(ga) }); } if (ga_v2) { scripts.push( { async: true, src: `//www.googletagmanager.com/gtag/js?id=${ga_v2}` }, { content: gaV2Tpl(ga_v2) } ); } } return scripts.filter(Boolean); }); }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = {});