sqzass
English

개발 서버

메모리 서빙, 변경 시 리빌드, 보던 자리를 지키는 새로고침

sqzass serve -i docs

http://127.0.0.1:3000에 뜨고, content/·templates/·static/·i18n/ 안의 무엇이든, 또는 sqzass.toml 자체가 바뀔 때마다 다시 빌드합니다. 출력 디렉터리는 일부러 보지 않습니다. 자기가 쓴 것을 보고 다시 빌드하면 끝나지 않습니다.

플래그
-i, --input . 사이트 루트.
-b, --bind 127.0.0.1 바인드 주소.
-p, --port 3000 포트.
--drafts 드래프트 페이지도 포함.
--base-url base_url 덮어쓰기.

디스크에는 아무것도 쓰지 않습니다

빌드 결과가 메모리로 들어가고 거기서 서빙됩니다. 서버가 도는 동안 public/은 건드리지 않습니다.

최적화가 아닙니다. 리빌드 중에 브라우저가 파일을 요청하면 그 시점까지 쓰인 바이트가 그대로 나가고, 그렇게 나온 반쪽짜리 페이지는 "내 코드 문제가 아니었구나"를 깨닫기까지 한 시간을 쓰게 되는 종류의 버그입니다. 완성된 빌드를 서빙하거나 아예 서빙하지 않으면 그 틈이 통째로 사라집니다.

새로고침

리로드 스크립트는 빌드 산출물에 쓰이는 게 아니라 서빙하는 시점에 주입됩니다. 그래서 출력물은 프로덕션 빌드와 바이트 단위로 동일하게 유지됩니다.

CSS만 바뀐 변경은 페이지를 새로고침하는 대신 스타일시트의 href를 그 자리에서 갈아 끼웁니다. 페이지가 움직이지 않으니 여백을 조금씩 밀어 보는 동안 스크롤 위치를 잃지 않습니다. 그 밖의 변경은 페이지를 새로고침합니다.

빌드가 실패하면

보고 있지도 않을 터미널에만 찍는 대신 브라우저에 에러를 띄우고, 그 아래에는 마지막 성공 버전이 계속 서빙됩니다. 파일을 고쳐 저장하면 오버레이가 사라집니다.

프로덕션 서버가 아닙니다

캐싱도, 압축도, 접근 제어도, TLS도 없습니다. 그래서 기본 바인드가 localhost입니다. --bind 0.0.0.0을 주면 같은 네트워크의 휴대폰에서 사이트를 볼 수 있고, 유용하며, 딱 거기까지입니다.