sqzass.git

sqzass

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

docs/content/features/dev-server.ko.md (2416B)

      1 +++
      2 title = "개발 서버"
      3 description = "메모리 서빙, 변경 시 리빌드, 보던 자리를 지키는 새로고침"
      4 weight = 40
      5 toc = true
      6 +++
      7 
      8 ```bash
      9 sqzass serve -i docs
     10 ```
     11 
     12 <http://127.0.0.1:3000>에 뜨고, `content/`·`templates/`·`static/`·`i18n/` 안의
     13 무엇이든, 또는 `sqzass.toml` 자체가 바뀔 때마다 다시 빌드합니다. 출력 디렉터리는
     14 일부러 보지 않습니다. 자기가 쓴 것을 보고 다시 빌드하면 끝나지 않습니다.
     15 
     16 | 플래그 | | |
     17 |---|---|---|
     18 | `-i`, `--input` | `.` | 사이트 루트. |
     19 | `-b`, `--bind` | `127.0.0.1` | 바인드 주소. |
     20 | `-p`, `--port` | `3000` | 포트. |
     21 | `--drafts` | | 드래프트 페이지도 포함. |
     22 | `--base-url` | | `base_url` 덮어쓰기. |
     23 
     24 ## 디스크에는 아무것도 쓰지 않습니다
     25 
     26 빌드 결과가 메모리로 들어가고 거기서 서빙됩니다. 서버가 도는 동안 `public/`은
     27 건드리지 않습니다.
     28 
     29 최적화가 아닙니다. 리빌드 중에 브라우저가 파일을 요청하면 그 시점까지 쓰인 바이트가
     30 그대로 나가고, 그렇게 나온 반쪽짜리 페이지는 "내 코드 문제가 아니었구나"를 깨닫기까지
     31 한 시간을 쓰게 되는 종류의 버그입니다. 완성된 빌드를 서빙하거나 아예 서빙하지 않으면
     32 그 틈이 통째로 사라집니다.
     33 
     34 ## 새로고침
     35 
     36 리로드 스크립트는 빌드 산출물에 쓰이는 게 아니라 **서빙하는 시점에** 주입됩니다.
     37 그래서 출력물은 프로덕션 빌드와 바이트 단위로 동일하게 유지됩니다.
     38 
     39 CSS만 바뀐 변경은 페이지를 새로고침하는 대신 스타일시트의 `href`를 그 자리에서
     40 갈아 끼웁니다. 페이지가 움직이지 않으니 여백을 조금씩 밀어 보는 동안 스크롤 위치를
     41 잃지 않습니다. 그 밖의 변경은 페이지를 새로고침합니다.
     42 
     43 ## 빌드가 실패하면
     44 
     45 보고 있지도 않을 터미널에만 찍는 대신 브라우저에 에러를 띄우고, 그 아래에는 마지막
     46 성공 버전이 계속 서빙됩니다. 파일을 고쳐 저장하면 오버레이가 사라집니다.
     47 
     48 ## 프로덕션 서버가 아닙니다
     49 
     50 캐싱도, 압축도, 접근 제어도, TLS도 없습니다. 그래서 기본 바인드가 localhost입니다.
     51 `--bind 0.0.0.0`을 주면 같은 네트워크의 휴대폰에서 사이트를 볼 수 있고, 유용하며,
     52 딱 거기까지입니다.