배포
웹 사이트에 게시할 파일을 빌드하기 위해서 아래 명령을 실행합니다.
- npm
- Yarn
- pnpm
npm run build
yarn build
pnpm run build
Once it finishes, the static files will be generated within the build
directory.
The only responsibility of Docusaurus is to build your site and emit static files in build
.
만들어진 정적 파일을 어떻게 호스팅할 것인지는 여러분에게 달려 있습니다.
You can deploy your site to static site hosting services such as Vercel, GitHub Pages, Netlify, Render, Surge...
도큐사우루스 사이트는 정적 렌더링 방식을 사용합니다. 자바스크립트가 없이도 잘 동작합니다.
Configuration
The following parameters are required in docusaurus.config.js
to optimize routing and serve files from the correct location:
옵션명 | 설명 |
---|---|
url | 사이트의 URL을 설정합니다. For a site deployed at https://my-org.com/my-project/ , url is https://my-org.com/ . |
baseUrl | 트레일링 슬래시를 포함한 프로젝트 Base URL을 설정합니다. For a site deployed at https://my-org.com/my-project/ , baseUrl is /my-project/ . |
Testing your Build Locally
실제 배포 작업을 진행하기 전에 로컬에서 빌드 테스트를 진행해야 합니다. Docusaurus provides a docusaurus serve
command for that:
- npm
- Yarn
- pnpm
npm run serve
yarn serve
pnpm run serve
By default, this will load your site at http://localhost:3000/
.
Trailing slash configuration
Docusaurus has a trailingSlash
config, to allow customizing URLs/links and emitted filename patterns.
기본값에서도 잘 동작합니다. Unfortunately, each static hosting provider has a different behavior, and deploying the exact same site to various hosts can lead to distinct results. 여러분이 선택한 호스팅 서비스에 따라 설정을 변경해서 사용할 수 있습니 다.
Use slorber/trailing-slash-guide to understand better the behavior of your host and configure trailingSlash
appropriately.
Using environment variables
잠재적으로 민감할 수 있는 정보는 환경 설정으로 빼놓은 것이 일반적인 관행입니다. However, in a typical Docusaurus website, the docusaurus.config.js
file is the only interface to the Node.js environment (see our architecture overview), while everything else—MDX pages, React components... are client side and do not have direct access to the process
global. In this case, you can consider using customFields
to pass environment variables to the client side.
// dotenv를 사용하고 있다면 (https://www.npmjs.com/package/dotenv)
require('dotenv').config();
module.exports = {
title: '...',
url: process.env.URL, // 환경 변수를 사용해 사이트 세부 사항을 제어할 수 있습니다
customFields: {
// 여기에 사용자 지정 환경 설정을 추가하세요
teamEmail: process.env.EMAIL,
},
};
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
export default function Home() {
const {
siteConfig: {customFields},
} = useDocusaurusContext();
return <div>Contact us through {customFields.teamEmail}!</div>;
}
Choosing a hosting provider
몇 가지 공통적인 호스팅 옵션입니다.
- Self hosting with an HTTP server like Apache2 or Nginx;
- Jamstack providers, e.g. Netlify and Vercel. 이들을 참조하긴 하지만 다른 공급자들도 같은 방식을 적용될 수 있습니다.
- GitHub Pages. (이 역시 잼스택의 하나이지만 별도로 분류했습니다).
어떤 것을 선택해야 할지 잘 모르겠다면 다음 질문을 참고하세요.
How much resource (person-hours, money) am I willing to invest in this?
- 🔴 자체 호스팅은 설정하기가 쉽지 않습니다. 일반적으로 이를 관리하기 위해 경험 있는 사람이 필요합니다. 클라우드 서비스는 대부분 무료가 아니며 자체 서버를 설정하고 WAN에 연결하는 것도 많은 비용이 들어갑니다.
- 🟢 잼스택 공급자는 바로 동작하는 웹사이트를 거의 즉시 설정할 수 있도록 도와주고 서버 측 리다이렉션 같은 기능도 쉽게 구성할 수 있습니다. 대부분 공급자가 거의 초과하지 않을 정도의 빌드 시간 할당량을 지원하는 관대한 무료 플랜을 제공합니다. 하지 만 궁극적으로는 제한적입니다. 한도에 도달하면 비용을 지불해야 합니다. 자세한 내용은 공급자의 가격 목록을 확인하세요.
- 🟡 깃헙 페이지 배포 흐름은 설정하기가 지겨울 수 있습니다. (Evidence: see the length of Deploying to GitHub Pages!) 하지만 이 서비스(빌드와 배포를 포함해)는 공개 저장소인 경우 항상 무료이며 작업에 필요한 자세한 지침을 제공해줍니다.
How much server-side configuration would I need?
- 🟢 자체 호스팅을 사용하면 전체 서버 구성에 접근할 수 있습니다. 요청 URL을 기반으로 다른 콘텐츠를 제공하도록 가상 호스트를 구성할 수 있습니다. 복잡한 서버 측 리다이렉트도 처리할 수 있습니다. 사이트 일부를 인증을 통해 접근하도록 허용할 수도 있습니다. 서버 측 기능이 많이 필요한 경우 웹사이트 자체 호스팅을 추천합니다.
- 🟡 잼스택은 일반적으로 일부 서버 측 구성을 지원합니다. 예를 들어 URL 형식(트레일링 슬래시), 서버 측 리다이렉트 등을 사용할 수 있습니다.
- 🔴 깃헙 페이지는 HTTPS를 적용하고 CNAME을 설정하는 것 외에 추가적인 서버 측 구성은 지원하지 않습니다.
Do I have needs to cooperate?
- 🟡 자체 호스팅 서비스는 Netlify와 같은 결과물을 얻을 수 있지만 훨씬 더 많은 작업이 필요합니다. 일반적으로 배포를 관리하는 인력이 필요하며 워크플로우는 다른 두 가지 옵션과 달리 깃 기반이 아닙니다.
- 🟢 Netlify와 Vercel은 모두 풀 리퀘스트에 대한 배포 미리보기를 지원해서 팀이 제품을 병합하기 전에 작업을 검토하는데 유용합니다. 배포에 접근할 수 있는 다른 구성원을 팀으로 관리할 수 있습니다.
- 🟡 깃헙 페이지는 배포 미리보기를 쉽게 설정할 수 있도록 허용하지 않습니다. 하나의 저장소는 하나의 사이트 배포에만 연결할 수 있습니다. 하지만 사이트 배포에 대한 쓰기 접근 권한을 가진 사용자를 관리할 수 있습니다.
모든 것을 만족하는 해결책은 없습니다. 선택을 하기 전에 어떤 것이 필요한지 어떤 자원을 가지고 있는지 확인하고 결정해야 합니다.
Self-Hosting
Docusaurus can be self-hosted using docusaurus serve
. Change port using --port
and --host
to change host.
- npm
- Yarn
- pnpm
npm run serve -- --build --port 80 --host 0.0.0.0
yarn serve --build --port 80 --host 0.0.0.0
pnpm run serve -- --build --port 80 --host 0.0.0.0