@umijs/plugins
Version:
121 lines (119 loc) • 3.47 kB
JavaScript
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 = {});