개발 서버
메모리 서빙, 변경 시 리빌드, 보던 자리를 지키는 새로고침
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을 주면 같은 네트워크의 휴대폰에서 사이트를 볼 수 있고, 유용하며,
딱 거기까지입니다.