跳转到导航 跳转到主要内容
CNB版本
社区版
cnb.cool
国外版
cnb.build
2025/12/14

部署

本页大纲

现在你已经用 Eleventy 构建了一个网站(即使只有一个 HTML 页面!),你可能准备将它发布到网上让所有人看到!有很多不同的方法可以做到这一点!

标准的 Eleventy 构建(例如运行 npx @11ty/eleventy默认就是生产就绪的构建。Eleventy 在内部不会为开发环境与生产环境改变其构建行为。

如果你想自定义 Eleventy 来实现自己的本地开发/生产环境优化,环境变量是实现这个目标的常用解决方案。

提供商

看看下面的列表,了解在哪里部署你的 Eleventy 项目。有很多部署选项可用,这里并非详尽列表。

Jamstack 提供商

Jamstack 提供商可以在你向源代码仓库(GitHub、GitLab、Codeberg 等)提交文件时自动触发你的 Eleventy 构建命令,并为你部署 Eleventy 的构建输出目录

使用 npm 脚本

通过 Jamstack 提供商部署 Eleventy 时的一个常见做法是使用 npm 脚本来运行构建命令。这在你的 package.json 文件中配置,可能如下所示:

Filename package.json
{
  "scripts": {
    "build": "npx @11ty/eleventy"
  }
}

这允许你配置主机运行 npm run build,并允许你在代码中对该命令进行未来更改,而不需要在主机配置中更改。

传统 Web 主机

Eleventy 可以与任何支持静态文件的 Web 主机配合使用!

使用这些主机时,部署不会自动为你触发,所以在运行 Eleventy 构建命令后,你需要手动将 Eleventy 输出目录(默认为 _site)上传到主机。

如果你不熟悉源代码控制(例如 git 或 GitHub),这是一个很好的起点。

在线编辑

有一些很棒的 Web 编辑器出现,你可以用它在线运行和编辑 Eleventy 项目!这里有一些选项:

持久化缓存

.cache 文件夹被 Eleventy Fetch 插件(和 Eleventy Image)用来避免重复昂贵的网络请求。在你的托管提供商的构建服务器上,当你开始构建时这个文件夹通常是空的,因为你绝对没有将你的 .cache 文件夹提交到 git(对吗?)。

一些 Jamstack 提供商有额外功能可以在构建之间持久化这个文件夹,重用缓存并加速构建时间。以下是其中一些:

加速 Eleventy Image

此外,如果你将 Eleventy Image 输出写入你的 Eleventy 输出目录(例如 ./_site/img/)(并且不将这些文件提交到 git),你也可以持久化这个文件夹以重用 Eleventy Image 磁盘缓存来改善构建时间。

迷你教程

将 Eleventy 项目部署到 GitHub Pages

包括跨构建的持久化缓存。使用 peaceiris/actions-gh-pages

  1. 转到 GitHub 上你的仓库设置。
  2. 在 GitHub Pages 部分更改:
    • Source: Deploy from a branch
    • Branch: gh-pages/(root)
  3. 将 "build-ghpages" 命令添加到你的
    package.json 脚本部分
    "scripts": {
      "build-ghpages": "npx @11ty/eleventy --pathprefix=/your-repo-name/",
    }
  4. .github/workflows/deploy-to-ghpages.yml 中创建新的 GitHub 工作流文件
    name: Deploy to GitHub Pages
    
    on:
      push:
        branches:
          - main
      pull_request:
    
    jobs:
      deploy:
        runs-on: ubuntu-22.04
        permissions:
          contents: write
        concurrency:
          group: ${{ github.workflow }}-${{ github.ref }}
        steps:
          - uses: actions/checkout@v3
    
          - name: Setup Node
            uses: actions/setup-node@v3
            with:
              node-version: "18"
    
          - name: Persist npm cache
            uses: actions/cache@v3
            with:
              path: ~/.npm
              key: ${{ runner.os }}-node-${{ hashFiles('**/package.json') }}
    
          - name: Persist Eleventy .cache
            uses: actions/cache@v3
            with:
              path: ./.cache
              key: ${{ runner.os }}-eleventy-fetch-cache
    
          - run: npm install
          - run: npm run build-ghpages
    
          - name: Deploy
            uses: peaceiris/actions-gh-pages@v3
            if: github.ref == 'refs/heads/main'
            with:
              github_token: ${{ secrets.GITHUB_TOKEN }}
              publish_dir: ./_site

使用 netlify-plugin-cache 持久化缓存

使用 netlify-plugin-cache

  1. npm install netlify-plugin-cache
  2. 将以下内容添加到你的
    netlify.toml 配置文件
    [[plugins]]
    package = "netlify-plugin-cache"
    
      [plugins.inputs]
      paths = [ ".cache" ]

相关内容

来自社区

×2 个资源通过 11tybundle.devFavicon for avatar.w3c.cool/https%3A%2F%2Fwww.bobmonsour.com%2FBob Monsour 整理。


其他页面在 Services