From af5538397cf6baccc00e71a5e01465e52dc8cc3c Mon Sep 17 00:00:00 2001 From: Alain Date: Mon, 31 Oct 2022 10:09:37 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..25716a1 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# Turbo 中文文档 + +这里是 Turbo 的中文文档翻译项目,欢迎大家加入 + +## 如何参与翻译 + +1. 在 `project` 这边领取任务,[前往 project](https://github.com/orgs/turbo-cn/projects/1/views/1) +2. 在 `project` 确定好要翻译的任务后,将对应的任务转换成 `issue`,并拖入 `In Progress` 阶段 +3. 在上一步转换的 `issue` 下评论 `该章节由我翻译` 或者 `Assignees` 给自己 +4. `fork` 并 `clone` 仓库(如果你已经做过此步则跳过) +5. 开始本地翻译,如果本地运行项目请参考下面的章节 + +## 如何运行项目 + +在你已经 clone 项目到本地之后,进入项目目录,执行以下命令,如果你使用其他包管理器,例如 `yarn` `pnpm` 请根据实际情况替换命令。 + +```bash +npm install +npm run dev +``` + +## 翻译注意点 + +1. 应尽量避免非翻译文本内容之外的改动 +2. 确保每个可跳转路由可以准确跳转 From 3eca13df512fe0db9460f1333534dfdeedec0103 Mon Sep 17 00:00:00 2001 From: Alain Date: Tue, 1 Nov 2022 10:21:18 +0800 Subject: [PATCH 2/4] update gitignore --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 3907999..f63ba5f 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,7 @@ node_modules .next out + +# ide +.vscode +.idea From 7f76e807fcf94e076de5d4e6b9d57681bc027b0d Mon Sep 17 00:00:00 2001 From: Alain Date: Tue, 1 Nov 2022 12:13:22 +0800 Subject: [PATCH 3/4] update --- package-lock.json | 152 -------------------------------------------- pages/_document.tsx | 2 - theme.config.js | 17 ++++- 3 files changed, 15 insertions(+), 156 deletions(-) diff --git a/package-lock.json b/package-lock.json index fed2fd7..6ba574e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -45,7 +45,6 @@ "postcss": "8.4.18", "rss": "^1.2.2", "tailwindcss": "3.1.8", - "ts-json-schema-generator": "1.1.2", "typescript": "4.8.4" } }, @@ -1454,12 +1453,6 @@ "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz", "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==" }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -6916,15 +6909,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-stable-stringify": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz", - "integrity": "sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -7587,76 +7571,6 @@ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, - "node_modules/ts-json-schema-generator": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-1.1.2.tgz", - "integrity": "sha512-XMnxvndJFJEYv3NBmW7Po5bGajKdK2qH8Q078eDy60srK9+nEvbT9nLCRKd2IV/RQ7a+oc5FNylvZWveqh7jeQ==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.11", - "commander": "^9.4.0", - "glob": "^8.0.3", - "json5": "^2.2.1", - "normalize-path": "^3.0.0", - "safe-stable-stringify": "^2.4.0", - "typescript": "~4.8.3" - }, - "bin": { - "ts-json-schema-generator": "bin/ts-json-schema-generator" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ts-json-schema-generator/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/ts-json-schema-generator/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/ts-json-schema-generator/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ts-json-schema-generator/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -9088,12 +9002,6 @@ "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz", "integrity": "sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==" }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -12964,12 +12872,6 @@ "is-regex": "^1.1.4" } }, - "safe-stable-stringify": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz", - "integrity": "sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==", - "dev": true - }, "scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -13482,60 +13384,6 @@ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, - "ts-json-schema-generator": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ts-json-schema-generator/-/ts-json-schema-generator-1.1.2.tgz", - "integrity": "sha512-XMnxvndJFJEYv3NBmW7Po5bGajKdK2qH8Q078eDy60srK9+nEvbT9nLCRKd2IV/RQ7a+oc5FNylvZWveqh7jeQ==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.11", - "commander": "^9.4.0", - "glob": "^8.0.3", - "json5": "^2.2.1", - "normalize-path": "^3.0.0", - "safe-stable-stringify": "^2.4.0", - "typescript": "~4.8.3" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, "tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", diff --git a/pages/_document.tsx b/pages/_document.tsx index 4b68872..7969059 100644 --- a/pages/_document.tsx +++ b/pages/_document.tsx @@ -14,8 +14,6 @@ class MyDocument extends Document { return ( - - ", }, logo: HeaderLogo, logoLink: false, @@ -75,8 +75,20 @@ const theme = { ogUrl = `https://turbo-site-og.vercel.app/api/og?type=${type}${title}`; } + const baiduStatisticsScript = ` + var _hmt = _hmt || []; + (function() { + var hm = document.createElement(\"script\"); + hm.src = "https://hm.baidu.com/hm.js?8e5291f90d0b584803c5c0e31939218e"; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(hm, s); + })(); + ` + return ( <> + + + ); }, editLink: { - text: "Edit this page on GitHub", + text: "帮助我们修订这篇文档", }, navbar: Navigation, footer: { From 18628fd488b09e451b6da59224718ae424302d3d Mon Sep 17 00:00:00 2001 From: Alain Date: Tue, 1 Nov 2022 14:07:32 +0800 Subject: [PATCH 4/4] WIP --- .vscode/settings.json | 5 ++-- components/GoogleAnalytics.tsx | 44 ++++++++++++++++++++++++++++++++++ package-lock.json | 1 + package.json | 1 + pages/_document.tsx | 14 ++++++----- theme.config.js | 11 --------- 6 files changed, 57 insertions(+), 19 deletions(-) create mode 100644 components/GoogleAnalytics.tsx diff --git a/.vscode/settings.json b/.vscode/settings.json index dc3fa81..4debe86 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,7 @@ { "cSpell.words": [ - "Turborepo", - "Turbopack" + "gtag", + "Turbopack", + "Turborepo" ] } diff --git a/components/GoogleAnalytics.tsx b/components/GoogleAnalytics.tsx new file mode 100644 index 0000000..258ac8e --- /dev/null +++ b/components/GoogleAnalytics.tsx @@ -0,0 +1,44 @@ +import Script from 'next/script' +import { useRouter } from 'next/router' +import { useEffect, useMemo } from 'react' + +const GA_TRACKING_ID = 'G-K2NP44GKV1' + +export default () => { + const router = useRouter() + console.log('router', router) + + const script = useMemo(() => ` + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag('js', new Date()); + gtag('config', '${GA_TRACKING_ID}', { + page_path: window.location.pathname, + }); + `, []) + + useEffect(() => { + const handleRouteChange = url => { + if (router == null || router.events == null) return + + if ('gtag' in window && typeof window.gtag === 'function') { + window.gtag('config', GA_TRACKING_ID, { page_path: url }) + } else { + console.error('window.gtag is undefined or not function!') + } + } + + router.events.on('routeChangeComplete', handleRouteChange) + return () => router.events.off('routeChangeComplete', handleRouteChange) + }, [router]) + + return ( + <> + ); },