From ee2eb5ca94fc93b76282b397d738ea6113e42acc Mon Sep 17 00:00:00 2001 From: Nin3 <30520689+Nin3lee@users.noreply.github.com> Date: Fri, 25 Apr 2025 17:38:06 +0800 Subject: [PATCH] i18n(zh-cn): Add `astro-config.mdx` --- .../zh-cn/reference/modules/astro-config.mdx | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 src/content/docs/zh-cn/reference/modules/astro-config.mdx diff --git a/src/content/docs/zh-cn/reference/modules/astro-config.mdx b/src/content/docs/zh-cn/reference/modules/astro-config.mdx new file mode 100644 index 0000000000000..cf855e5a97447 --- /dev/null +++ b/src/content/docs/zh-cn/reference/modules/astro-config.mdx @@ -0,0 +1,119 @@ +--- +title: 配置导入 API 参考 +sidebar: + label: 'astro:config' +i18nReady: true +tableOfContents: + minHeadingLevel: 2 + maxHeadingLevel: 6 +--- + +import Since from '~/components/Since.astro'; + +

+ +虚拟模块 `astro:config` 暴露了 Astro 配置的非完整、可序列化、类型安全的版本。它通过两个子模块提供了不同维度的配置访问:[`/client`] 和 [`/server`]。 + +所有可用的配置值都可以通过 `astro:config/server` 来获取。但是,在客户端执行的代码,仅通过 `astro:config/client` 暴露客户端可用的安全配置。这种客户端受限访问的方法,可以避免你的敏感信息泄露。 + +## 从 `astro:config/client` 导入 + +```js +import { + i18n, + trailingSlash, + base, + build, + site, +} from "astro:config/client"; +``` + +使用该子模块用于客户端代码: + +```js title="src/utils.js" ins={1} ins="trailingSlash" +import { trailingSlash } from "astro:config/client"; + +function addForwardSlash(path) { + if (trailingSlash === "always") { + return path.endsWith("/") ? path : path + "/" + } else { + return path + } +} +``` + +查看从 `astro:config/client` 导入的更多可用配置: + +- [`i18n`](/zh-cn/reference/configuration-reference/#i18n) +- [`trailingSlash`](/zh-cn/reference/configuration-reference/#trailingslash) +- [`base`](/zh-cn/reference/configuration-reference/#base) +- [`build.format`](/zh-cn/reference/configuration-reference/#buildformat) +- [`site`](/zh-cn/reference/configuration-reference/#site) + +## 从 `astro:config/server` 导入 + +```js +import { + i18n, + trailingSlash, + base, + build, + site, + srcDir, + cacheDir, + outDir, + publicDir, + root, +} from "astro:config/client"; +``` + +这些内容包括了从 `astro:config/client` 中可用的所有导入,其中也包含了更多额外的敏感信息,例如本地文件配置项这种不便暴露给客户端的内容。 + +使用该子模块用于服务器端代码: + +```js title="astro.config.mjs" +import { integration } from "./integration.mjs"; + +export default defineConfig({ + integrations: [ + integration(), + ] +}); +``` + +```js title="integration.mjs" ins={1} ins="outDir" +import { outDir } from "astro:config/server"; +import { writeFileSync } from "node:fs"; +import { fileURLToPath } from "node:url"; + +export default function() { + return { + name: "internal-integration", + hooks: { + "astro:build:done": () => { + let file = new URL("result.json", outDir); + // generate data from some operation + let data = JSON.stringify([]); + writeFileSync(fileURLToPath(path), data, "utf-8"); + } + } + } +} +``` + +查看从 `astro:config/server` 导入的更多可用配置: + +- [`i18n`](/zh-cn/reference/configuration-reference/#i18n) +- [`trailingSlash`](/zh-cn/reference/configuration-reference/#trailingslash) +- [`base`](/zh-cn/reference/configuration-reference/#base) +- [`build.format`](/zh-cn/reference/configuration-reference/#buildformat) +- [`build.client`](/zh-cn/reference/configuration-reference/#buildclient) +- [`build.server`](/zh-cn/reference/configuration-reference/#buildserver) +- [`build.serverEntry`](/zh-cn/reference/configuration-reference/#buildserverentry) +- [`build.assetsPrefix`](/zh-cn/reference/configuration-reference/#buildassetsprefix) +- [`site`](/zh-cn/reference/configuration-reference/#site) +- [`srcDir`](/zh-cn/reference/configuration-reference/#srcdir) +- [`cacheDir`](/zh-cn/reference/configuration-reference/#cachedir) +- [`outDir`](/zh-cn/reference/configuration-reference/#outdir) +- [`publicDir`](/zh-cn/reference/configuration-reference/#publicdir) +- [`root`](/zh-cn/reference/configuration-reference/#root)