5.3 책 만들기

render_book() 또는 preview_chapter()를 반복해서 실행하는 대신 실제로 웹 브라우저에서 책을 실시간으로 미리 볼 수 있으며 필요한 것은 Rmd 파일을 저장하는 것뿐입니다.

bookdownserve_book()함수는 servr 패키지를 기반으로 HTML 출력을 제공하기 위해 로컬 웹 서버를 시작할 수 있습니다 (Xie 2020c).

serve_book(dir = ".", output_dir = "_book", preview = TRUE, 
  in_session = TRUE, quiet = FALSE, ...)

책의 루트 디렉토리를 dir 인수에 전달하면 이 함수는 로컬 웹 서버를 시작하므로 서버를 사용하여 책 출력을 볼 수 있습니다. 책 출력에 액세스하기 위한 기본 URL은 ’http://127.0.0.1:4321'입니다. 대화형 R 세션에서 이 기능을 실행하면 이 URL이 웹 브라우저에서 자동으로 열립니다. RStudio IDE를 사용하는 경우 RStudio Viewer가 기본 웹 브라우저로 사용되므로 동일한 환경에서 Rmd 소스 파일을 작성하고 출력을 미리 볼 수 있습니다(예 : 왼쪽에 소스와 오른쪽에 출력)

서버는 책 루트 디렉토리의 변경 사항을 수신합니다. 책 디렉토리의 파일을 수정할 때마다 serve_book()은 변경 사항을 감지하고 Rmd 파일을 다시 컴파일하며 웹 브라우저를 자동으로 새로 고칠 수 있습니다. 수정된 파일에 Rmd 파일이 포함되지 않은 경우 브라우저를 새로 고칩니다 (예 : 특정 CSS 파일 만 업데이트 한 경우). 즉, 서버가 시작되면 다음에 해야 할 일은 단순히 책을 쓰고 파일을 저장하는 것입니다. 파일을 저장하면 편집과 미리보기가 자동으로 수행됩니다.

책 전체를 다시 컴파일하는 데 시간이 너무 많이 걸리지 않으면 preview = FALSE 인수를 설정하여 책을 업데이트 할 때마다 전체 책이 다시 컴파일되고 그렇지 않으면 수정 된 장만 preview_chapter()를 통해 다시 컴파일됩니다.

...의 인수는 servr::httw()로 전달되며 daemonport와 같은 가능한 모든 옵션을 보려면 도움말 페이지를 참조하십시오. in_session = TRUE 또는 FALSE를 사용하는 데에는 장단점이 있습니다.

  • in_session = TRUE의 경우 현재 R 세션에서 책에 생성된 모든 객체에 액세스 할 수 있습니다. 데몬화 된 서버를 사용하는 경우 (daemon = TRUE 인수를 통해) 언제든지 객체를 확인할 수 있습니다. 현재 R 세션이 사용 중이 아닐 때; 그렇지 않으면 개체를 확인하기 전에 서버를 중지해야 합니다. 이것은 책에서 R 객체를 대화식으로 탐색해야 할 때 유용 할 수 있습니다. in_session = TRUE의 단점은 현재 R 세션의 상태가 깨끗하지 않을 수 있기 때문에 새로운 R 세션에서 컴파일된 책과 출력이 다를 수 있다는 것입니다.
  • in_session = FALSE의 경우 현재 R 세션에서 책의 개체에 액세스할 수 없지만 모든 것이 새 R 세션에서 생성되므로 출력이 재현될 가능성이 더 큽니다. 이 기능은 미리보기 목적으로만 사용되므로 R 세션의 청결성은 큰 문제가 되지 않을 수 있습니다.

특정 사용 사례에 따라 in_session = TRUE 또는 FALSE를 선택할 수 있습니다. 결국 새로운 R 세션에서 신뢰할 수 있는 책 출력을 생성하기 위해서는 render_book()을 실행해야 합니다.