sqzass.git

sqzass

~ A static site generator written in Rust
git clone https://github.com/debuman/sqzass.git

docs/content/deploy/netlify.ko.md (2622B)

      1 +++
      2 title = "Netlify"
      3 description = "netlify.toml, 그리고 base_url이 맞는 배포 프리뷰"
      4 weight = 20
      5 toc = true
      6 +++
      7 
      8 ```toml
      9 # netlify.toml
     10 [build]
     11   command   = "curl -sSL https://github.com/debuman/sqzass/releases/latest/download/sqzass-x86_64-unknown-linux-musl.tar.gz | tar xz --strip-components=1 && ./sqzass build"
     12   publish   = "public"
     13 
     14 [context.deploy-preview]
     15   command   = "curl -sSL https://github.com/debuman/sqzass/releases/latest/download/sqzass-x86_64-unknown-linux-musl.tar.gz | tar xz --strip-components=1 && ./sqzass build --base-url $DEPLOY_PRIME_URL"
     16 ```
     17 
     18 설정은 이게 전부입니다. 플러그인도, 빌드 이미지도, 런타임도 없습니다.
     19 
     20 ## 왜 설치가 아니라 바이너리를 받나
     21 
     22 Netlify 빌드 이미지에는 Rust 툴체인이 기본으로 없고, 넣으면 빌드마다 몇 분이
     23 더 듭니다. 리눅스 릴리스는 정적 링크라 glibc 버전을 맞추지 않고도 어떤 이미지에서든
     24 돕니다. Alpine에서도, scratch 컨테이너에서도, 빌드한 머신보다 오래된 머신에서도
     25 도는 것과 같은 성질입니다.
     26 
     27 소스에서 빌드하고 싶으면 `cargo install --git
     28 https://github.com/debuman/sqzass`도 됩니다. 다만 느립니다.
     29 
     30 ## 배포 프리뷰에는 자기 base_url이 필요합니다
     31 
     32 프리뷰는 본 도메인이 아니라 `deploy-preview-42--yoursite.netlify.app`에서
     33 돕니다. Netlify가 그 주소를 `$DEPLOY_PRIME_URL`에 넣어 주고, `--base-url`이
     34 바로 이 경우를 위해 설정을 덮어씁니다. 그래야 canonical과 sitemap, OpenGraph 태그가
     35 프로덕션이 아니라 프리뷰를 가리킵니다.
     36 
     37 이걸 안 해도 프리뷰는 **동작합니다.** 내부 링크가 루트 절대 경로라서 호스트 이름을
     38 신경 쓰지 않기 때문입니다. 깨지는 건 절대 URL 쪽입니다 — `page.permalink`,
     39 `sitemap.xml`, 소셜 태그.
     40 
     41 ## 예쁜 URL·리다이렉트·헤더
     42 
     43 설정할 게 없습니다. 모든 페이지가 `index.html`을 담은 디렉터리라서 Netlify가
     44 rewrite 규칙 없이 `/start/`를 서빙하고, `templates/404.html`이 있으면 `/404.html`을
     45 이름으로 찾아 씁니다.
     46 
     47 `_redirects`와 `_headers`는 Netlify 고유 파일이고 둘 다 필수가 아닙니다. 쓰고 싶으면
     48 `static/`에 두면 그대로 복사됩니다 — `static/`은 통과 경로이고, 이름 자체가 계약인
     49 파일은 이름이 유지됩니다.
     50 
     51 ```
     52 static/
     53 ├── _headers
     54 └── _redirects
     55 ```
     56 
     57 ## 필요 없는 것
     58 
     59 `netlify-plugin-*`도, `NODE_VERSION`도, `functions` 디렉터리도 없습니다. 결과물은
     60 파일이 든 디렉터리입니다.