mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
fix: google analytics only on production
This commit is contained in:
@@ -50,6 +50,7 @@ jobs:
|
|||||||
run: pnpm build
|
run: pnpm build
|
||||||
env:
|
env:
|
||||||
BASE_PATH: /easy-png-tools
|
BASE_PATH: /easy-png-tools
|
||||||
|
PUBLIC_GA_ENABLED: "true"
|
||||||
|
|
||||||
- name: Upload Pages artifact
|
- name: Upload Pages artifact
|
||||||
uses: actions/upload-pages-artifact@v3
|
uses: actions/upload-pages-artifact@v3
|
||||||
|
|||||||
+2
-3
@@ -127,9 +127,8 @@
|
|||||||
- [ ] дистрибуция: закрепить репо, alternative.to, Product Hunt, Reddit/HN (S4c)
|
- [ ] дистрибуция: закрепить репо, alternative.to, Product Hunt, Reddit/HN (S4c)
|
||||||
- [ ] GSC: подключить домен, отправить sitemap, мониторинг индексации (S4a)
|
- [ ] GSC: подключить домен, отправить sitemap, мониторинг индексации (S4a)
|
||||||
- [ ] GA4: cookieless-конфигурация, отключить рекламные audiences и signals,
|
- [ ] GA4: cookieless-конфигурация, отключить рекламные audiences и signals,
|
||||||
`anonymize_ip` — сейчас в `web/src/app.html` голый `gtag('config')` (S4b)
|
`anonymize_ip` — сейчас в `web/src/routes/+layout.svelte` голый
|
||||||
- [ ] GA4: отсечь попадания с локальных и preview-сборок — тег стоит в
|
`gtag('config')` (S4b)
|
||||||
prerender-оболочке и грузится на каждой странице, нужен флаг окружения
|
|
||||||
|
|
||||||
## Платформа (API/PWA)
|
## Платформа (API/PWA)
|
||||||
|
|
||||||
|
|||||||
+4
-3
@@ -280,9 +280,10 @@
|
|||||||
мониторинг индексации и запросов. Бесплатно и обязательно.
|
мониторинг индексации и запросов. Бесплатно и обязательно.
|
||||||
- [ ] **[S4b]** Довести GA4 до решения §0: cookieless-конфигурация, отключённые
|
- [ ] **[S4b]** Довести GA4 до решения §0: cookieless-конфигурация, отключённые
|
||||||
рекламные audiences и signals, `anonymize_ip`, запрет на передачу
|
рекламные audiences и signals, `anonymize_ip`, запрет на передачу
|
||||||
параметров с данными картинки. Плюс отсечь мусорные попадания:
|
параметров с данными картинки. Мусорные попадания уже отсечены: тег
|
||||||
prerender-оболочка грузит тег и на локальных сборках, их нужно отсекать
|
подключается только при `PUBLIC_GA_ENABLED=true` (выставлен в
|
||||||
флагом окружения. GA/ЯМ как замена счётчику не рассматриваем.
|
deploy-workflow, `+layout.svelte`). GA/ЯМ как замена счётчику не
|
||||||
|
рассматриваем.
|
||||||
- [ ] **[S4c]** Дистрибуция: закрепить GitHub-репо (README со скриншотами),
|
- [ ] **[S4c]** Дистрибуция: закрепить GitHub-репо (README со скриншотами),
|
||||||
подача на alternative.to (страница против конкурента), Product Hunt,
|
подача на alternative.to (страница против конкурента), Product Hunt,
|
||||||
тематические Reddit/HN-треды. Бэклинки — главный дефицит для конкуренции.
|
тематические Reddit/HN-треды. Бэклинки — главный дефицит для конкуренции.
|
||||||
|
|||||||
@@ -4,20 +4,6 @@
|
|||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<meta name="text-scale" content="scale" />
|
<meta name="text-scale" content="scale" />
|
||||||
<!-- Google tag (gtag.js) -->
|
|
||||||
<script
|
|
||||||
async
|
|
||||||
src="https://www.googletagmanager.com/gtag/js?id=G-MEQJ7JHRQQ"
|
|
||||||
></script>
|
|
||||||
<script>
|
|
||||||
window.dataLayer = window.dataLayer || [];
|
|
||||||
function gtag() {
|
|
||||||
dataLayer.push(arguments);
|
|
||||||
}
|
|
||||||
gtag("js", new Date());
|
|
||||||
|
|
||||||
gtag("config", "G-MEQJ7JHRQQ");
|
|
||||||
</script>
|
|
||||||
<script>
|
<script>
|
||||||
(() => {
|
(() => {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -31,6 +31,10 @@
|
|||||||
|
|
||||||
let crumb = $derived(toCrumb(page.url.pathname));
|
let crumb = $derived(toCrumb(page.url.pathname));
|
||||||
|
|
||||||
|
// GA подключается только в production-деплое: флаг выставляется в
|
||||||
|
// deploy-workflow, локальные и preview-сборки тег не получают.
|
||||||
|
const gaEnabled = import.meta.env.PUBLIC_GA_ENABLED === "true";
|
||||||
|
|
||||||
function toCrumb(path: string): string {
|
function toCrumb(path: string): string {
|
||||||
if (path === "/") return "/ " + t("header.home");
|
if (path === "/") return "/ " + t("header.home");
|
||||||
if (path === "/list-tools") return "/ " + t("header.catalog");
|
if (path === "/list-tools") return "/ " + t("header.catalog");
|
||||||
@@ -46,6 +50,13 @@
|
|||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
<link rel="icon" href={`${resolve("/")}favicon.svg`} />
|
<link rel="icon" href={`${resolve("/")}favicon.svg`} />
|
||||||
|
{#if gaEnabled}
|
||||||
|
<script
|
||||||
|
async
|
||||||
|
src="https://www.googletagmanager.com/gtag/js?id=G-MEQJ7JHRQQ"
|
||||||
|
></script>
|
||||||
|
<script src={`${resolve("/")}ga.js`}></script>
|
||||||
|
{/if}
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
|
||||||
<main class="preview-root" data-theme={theme}>
|
<main class="preview-root" data-theme={theme}>
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag() {
|
||||||
|
window.dataLayer.push(arguments);
|
||||||
|
}
|
||||||
|
gtag("js", new Date());
|
||||||
|
gtag("config", "G-MEQJ7JHRQQ");
|
||||||
@@ -11,6 +11,8 @@ const base: "" | `/${string}` =
|
|||||||
: (`/${rawBase.replace(/^\/+/, "").replace(/\/+$/, "")}` as `/${string}`);
|
: (`/${rawBase.replace(/^\/+/, "").replace(/\/+$/, "")}` as `/${string}`);
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
|
// PUBLIC_* попадают в import.meta.env — флаги окружения вроде GA.
|
||||||
|
envPrefix: ["VITE_", "PUBLIC_"],
|
||||||
ssr: {
|
ssr: {
|
||||||
noExternal: ["@lucide/svelte"],
|
noExternal: ["@lucide/svelte"],
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user