GitLab Pages 공개 폴더
- GitLab 16.1에서는 게시된 폴더를
.gitlab-ci.yml
에서 구성할 수 있는 기능을 도입하여 더 이상 프레임워크 구성을 변경할 필요가 없습니다. 자세한 내용은 Pages와 함께 배포할 사용자 지정 폴더 설정하는 방법을 참조하세요.
다음 프레임워크에 대해 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
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
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
은 다음과 같이 최소화할 수 있습니다:
pages:
before_script:
- npm install
script:
- npm run build
- mv out/* public
artifacts:
paths:
- public
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 배포 파이프라인이 실행될 때, 해당 이름의 아티팩트를 찾습니다.
배포 전에 public
폴더를 생성하는 작업을 설정했다면, 예를 들어 npm run build
를 실행하여,
폴더를 커밋할 필요는 없습니다.
로컬에서 사이트를 빌드하는 것을 선호한다면, public
폴더를 커밋하고 대신 작업 중 빌드 단계를 생략할 수 있습니다.