跳转到内容

配置导入 API 参考

虚拟模块 astro:config 暴露了 Astro 配置的非完整、可序列化、类型安全的版本。它通过两个子模块提供了不同维度的配置访问:[/client] 和 [/server]。

所有可用的配置值都可以通过 astro:config/server 来获取。但是,在客户端执行的代码,仅通过 astro:config/client 暴露客户端可用的安全配置。这种客户端受限访问的方法,可以避免你的敏感信息泄露。

astro:config/client 导入

import {
  i18n, 
  trailingSlash,
  base,
  build,
  site,
  compressHTML,
} from "astro:config/client";

使用该子模块用于客户端代码:

import { trailingSlash } from "astro:config/client";

function addForwardSlash(path) {
  if (trailingSlash === "always") {
    return path.endsWith("/") ? path : path + "/"
  } else {
    return path
  }
}

查看从 astro:config/client 导入的更多可用配置:

astro:config/server 导入

import {
  i18n, 
  trailingSlash,
  base,
  build,
  site,
  srcDir,
  cacheDir,
  outDir,
  publicDir,
  root,
  compressHTML,
} from "astro:config/server";

这些内容包括了从 astro:config/client 中可用的所有导入,其中也包含了更多额外的敏感信息,例如本地文件配置项这种不便暴露给客户端的内容。

使用该子模块用于服务器端代码:

import { integration } from "./integration.mjs";

export default defineConfig({
    integrations: [
      integration(),
    ]
});
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(file), data, "utf-8");
      }
    }
  }
}

查看从 astro:config/server 导入的更多可用配置:

贡献 社区 赞助