diff --git a/packages/vant-cli/package.json b/packages/vant-cli/package.json
index 0594abe6f..7f7789110 100644
--- a/packages/vant-cli/package.json
+++ b/packages/vant-cli/package.json
@@ -92,6 +92,7 @@
"ts-jest": "^27.0.5",
"typescript": "^4.3.5",
"vite": "^2.5.3",
+ "vite-plugin-html": "^2.1.0",
"vite-plugin-md": "^0.11.0",
"vue-loader": "^16.5.0",
"vue-router": "^4.0.0",
diff --git a/packages/vant-cli/site/index.html b/packages/vant-cli/site/index.html
index 501bac367..cce623d05 100644
--- a/packages/vant-cli/site/index.html
+++ b/packages/vant-cli/site/index.html
@@ -2,6 +2,9 @@
+ <%= title %>
+
+
+ <% if (baiduAnalytics) { %>
+
+ <% } %>
diff --git a/packages/vant-cli/site/mobile.html b/packages/vant-cli/site/mobile.html
index a26f74c27..b3942b59c 100644
--- a/packages/vant-cli/site/mobile.html
+++ b/packages/vant-cli/site/mobile.html
@@ -2,16 +2,9 @@
- <%= htmlWebpackPlugin.options.title %>
-
-
+ <%- title %>
+
+
+ <% if (baiduAnalytics) { %>
+
+ <% } %>
diff --git a/packages/vant-cli/src/config/vite.site.ts b/packages/vant-cli/src/config/vite.site.ts
index f12b961b3..c4f6a0c57 100644
--- a/packages/vant-cli/src/config/vite.site.ts
+++ b/packages/vant-cli/src/config/vite.site.ts
@@ -1,13 +1,15 @@
import { join } from 'path';
+import { get } from 'lodash';
import hljs from 'highlight.js';
import vitePluginMd from 'vite-plugin-md';
import vitePluginVue from '@vitejs/plugin-vue';
import vitePluginJsx from '@vitejs/plugin-vue-jsx';
-import { setBuildTarget } from '../common';
+import { setBuildTarget, getVantConfig } from '../common';
import {
SITE_DESKTOP_SHARED_FILE,
SITE_MOBILE_SHARED_FILE,
} from '../common/constant';
+import { injectHtml } from 'vite-plugin-html';
import type { InlineConfig } from 'vite';
function markdownHighlight(str: string, lang: string) {
@@ -36,9 +38,34 @@ function markdownCardWrapper(htmlCode: string) {
.join('');
}
+function getSiteConfig(vantConfig: any) {
+ const siteConfig = vantConfig.site;
+
+ if (siteConfig.locales) {
+ return siteConfig.locales[siteConfig.defaultLang || 'en-US'];
+ }
+
+ return siteConfig;
+}
+
+function getTitle(config: { title: string; description?: string }) {
+ let { title } = config;
+
+ if (config.description) {
+ title += ` - ${config.description}`;
+ }
+
+ return title;
+}
+
export function getViteConfigForSiteDev(): InlineConfig {
setBuildTarget('package');
+ const vantConfig = getVantConfig();
+ const siteConfig = getSiteConfig(vantConfig);
+ const title = getTitle(siteConfig);
+ const baiduAnalytics = get(vantConfig, 'site.baiduAnalytics');
+
return {
root: join(__dirname, '../../site'),
@@ -64,6 +91,13 @@ export function getViteConfigForSiteDev(): InlineConfig {
},
}),
vitePluginJsx(),
+ injectHtml({
+ data: {
+ ...siteConfig,
+ title,
+ baiduAnalytics,
+ },
+ }),
],
resolve: {
diff --git a/packages/vant-cli/yarn.lock b/packages/vant-cli/yarn.lock
index e199af5d1..2618f715c 100644
--- a/packages/vant-cli/yarn.lock
+++ b/packages/vant-cli/yarn.lock
@@ -2574,6 +2574,11 @@ async-retry@1.3.1:
dependencies:
retry "0.12.0"
+async@0.9.x:
+ version "0.9.2"
+ resolved "https://registry.nlark.com/async/download/async-0.9.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fasync%2Fdownload%2Fasync-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
+ integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=
+
async@^2.6.1, async@^2.6.2:
version "2.6.3"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
@@ -3961,6 +3966,16 @@ dot-prop@^5.1.0, dot-prop@^5.2.0:
dependencies:
is-obj "^2.0.0"
+dotenv-expand@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0"
+ integrity sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=
+
+dotenv@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.nlark.com/dotenv/download/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81"
+ integrity sha1-PUInuPuV+BCWzdK2ZlP7LHCFuoE=
+
duplexer3@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
@@ -3971,6 +3986,13 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+ejs@^3.1.6:
+ version "3.1.6"
+ resolved "https://registry.npm.taobao.org/ejs/download/ejs-3.1.6.tgz?cache=0&sync_timestamp=1612643435705&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fejs%2Fdownload%2Fejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a"
+ integrity sha1-W/0KBol0O7UmizVQzO7rvBcCgio=
+ dependencies:
+ jake "^10.6.1"
+
electron-to-chromium@^1.3.811:
version "1.3.813"
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.813.tgz#751a007d71c00faed8b5e9edaf3634c14b9c5a1f"
@@ -4538,6 +4560,13 @@ file-entry-cache@^6.0.1:
dependencies:
flat-cache "^3.0.4"
+filelist@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npm.taobao.org/filelist/download/filelist-1.0.2.tgz?cache=0&sync_timestamp=1612641447730&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffilelist%2Fdownload%2Ffilelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b"
+ integrity sha1-gCAvIUYtTRwuIUEZsYB8G8A4Dls=
+ dependencies:
+ minimatch "^3.0.4"
+
filename-reserved-regex@^2.0.0:
version "2.0.0"
resolved "https://registry.nlark.com/filename-reserved-regex/download/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229"
@@ -4686,6 +4715,15 @@ front-matter@^4.0.2:
dependencies:
js-yaml "^3.13.1"
+fs-extra@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.nlark.com/fs-extra/download/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1"
+ integrity sha1-n/YbZV3eU/s0qC34S7IUzoAuF8E=
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
fs-extra@^8.1.0:
version "8.1.0"
resolved "https://registry.npm.taobao.org/fs-extra/download/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
@@ -5134,6 +5172,19 @@ html-minifier-terser@^5.0.1:
relateurl "^0.2.7"
terser "^4.6.3"
+html-minifier-terser@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.nlark.com/html-minifier-terser/download/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054"
+ integrity sha1-ki6W8fO7YIMsJjS3mIQJY4mx8FQ=
+ dependencies:
+ camel-case "^4.1.1"
+ clean-css "^4.2.3"
+ commander "^4.1.1"
+ he "^1.2.0"
+ param-case "^3.0.3"
+ relateurl "^0.2.7"
+ terser "^4.6.3"
+
html-tags@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140"
@@ -5839,6 +5890,16 @@ istanbul-reports@^3.0.2:
html-escaper "^2.0.0"
istanbul-lib-report "^3.0.0"
+jake@^10.6.1:
+ version "10.8.2"
+ resolved "https://registry.npm.taobao.org/jake/download/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b"
+ integrity sha1-68nehVgWCmbYLQ6txqLlj7xQCns=
+ dependencies:
+ async "0.9.x"
+ chalk "^2.4.2"
+ filelist "^1.0.1"
+ minimatch "^3.0.4"
+
jest-canvas-mock@^2.3.1:
version "2.3.1"
resolved "https://registry.nlark.com/jest-canvas-mock/download/jest-canvas-mock-2.3.1.tgz#9535d14bc18ccf1493be36ac37dd349928387826"
@@ -9572,6 +9633,11 @@ universalify@^1.0.0:
resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==
+universalify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npm.taobao.org/universalify/download/universalify-2.0.0.tgz?cache=0&sync_timestamp=1603180004159&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funiversalify%2Fdownload%2Funiversalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
+ integrity sha1-daSYTv7cSwiXXFrrc/Uw0C3yVxc=
+
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
@@ -9699,6 +9765,18 @@ vfile@^4.0.0:
unist-util-stringify-position "^2.0.0"
vfile-message "^2.0.0"
+vite-plugin-html@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.nlark.com/vite-plugin-html/download/vite-plugin-html-2.1.0.tgz#77b6ee11d9cdbdf766b5731fd416bacf26744fce"
+ integrity sha1-d7buEdnNvfdmtXMf1Ba6zyZ0T84=
+ dependencies:
+ "@rollup/pluginutils" "^4.1.1"
+ dotenv "^10.0.0"
+ dotenv-expand "^5.1.0"
+ ejs "^3.1.6"
+ fs-extra "^10.0.0"
+ html-minifier-terser "^5.1.1"
+
vite-plugin-md@^0.11.0:
version "0.11.0"
resolved "https://registry.nlark.com/vite-plugin-md/download/vite-plugin-md-0.11.0.tgz#cb397270e1a27bc17588d43f1a8a6478055eceac"