GitLab Pages 公共文件夹
- 层级:Free, Premium, Ultimate
- 提供方式:GitLab.com, GitLab Self-Managed, GitLab Dedicated
按照以下说明为以下框架配置 public 文件夹
Eleventy
对于 Eleventy,您应该执行以下操作之一:
-
在 Eleventy 构建命令中添加
--output=public标志,例如:npx @11ty/eleventy --input=path/to/sourcefiles --output=public -
将以下内容添加到您的
.eleventy.js文件中:// .eleventy.js module.exports = function(eleventyConfig) { return { dir: { output: "public" } } };
Astro
默认情况下,Astro 使用 public 文件夹存储静态资源。对于 GitLab Pages,
请先将该文件夹重命名为无冲突的替代名称:
-
在您的项目目录中,运行:
mv public static -
将以下内容添加到您的
astro.config.mjs。此代码通知 Astro 我们的文件夹名称重映射:// astro.config.mjs import { defineConfig } from 'astro/config'; export default defineConfig({ // GitLab Pages 要求暴露的文件位于名为 "public" 的文件夹中。 // 因此我们指示 Astro 将静态构建输出放入该名称的文件夹中。 outDir: 'public', // Astro 用于静态文件的文件夹名称(`public`)已经保留 // 用于构建输出。因此与默认设置不同,我们使用了一个名为 // `static` 的文件夹。 publicDir: 'static', });
SvelteKit
GitLab Pages 仅支持静态站点。对于 SvelteKit,
您可以使用 adapter-static。
使用 adapter-static 时,将以下内容添加到您的 svelte.config.js 中:
// svelte.config.js
import adapter from '@sveltejs/adapter-static';
export default {
kit: {
adapter: adapter({
pages: 'public'
})
}
};Next.js
GitLab Pages 仅支持静态站点。对于 Next.js,您可以使用 Next 的 静态 HTML 导出功能。
随着 Next.js 13 的发布,Next.js 的工作方式发生了很大变化。
建议使用以下 next.config.js 以便正确导出所有静态资源:
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
images: {
unoptimized: true,
},
assetPrefix: "https://example.gitlab.io/namespace-here/my-gitlab-project/"
}
module.exports = nextConfig一个 .gitlab-ci.yml 示例可以简化为:
create-pages:
before_script:
- npm install
script:
- npm run build
- mv out/* public
pages: true # 指定这是一个 Pages 作业并发布默认的公共目录上述 YAML 示例使用了用户定义的作业名称。
Nuxt.js
GitLab Pages 仅支持静态站点。
默认情况下,Nuxt 使用 public 文件夹存储静态资源。对于 GitLab
Pages,请先将 public 文件夹重命名为无冲突的替代名称:
-
在您的项目目录中,运行:
mv public static -
将以下内容添加到您的
nuxt.config.js中:export default { target: 'static', generate: { dir: 'public' }, dir: { // Nuxt 用于静态文件的文件夹名称(`public`)已经 // 保留用于构建输出。因此与默认设置不同,我们 // 使用了一个名为 `static` 的文件夹。 public: 'static' } } -
为您的 Nuxt.js 应用程序配置 静态站点生成。
Vite
更新您的 vite.config.js 以包含以下内容:
// vite.config.js
export default {
build: {
outDir: 'public'
}
}Webpack
更新您的 webpack.config.js 以包含以下内容:
// webpack.config.js
module.exports = {
output: {
path: __dirname + '/public'
}
};是否应该提交 public 文件夹?
不一定。但是,当 GitLab Pages 部署管道运行时,它会查找
同名 artifact。
如果您设置了一个在部署前创建 public 文件夹的作业,例如通过
运行 npm run build,则不需要提交该文件夹。
如果您更喜欢在本地构建站点,您可以提交 public 文件夹,
并在作业中省略构建步骤。