quarto-dev / quarto-dev/quarto-cli

preview command should check if server is defined

Open
#12,236 0 comments 0 reactions 1 assignee View on GitHub

@cscheid is already working on this.

Since Mar 7, 2025.

bug preview
Dominant language
JavaScript
Stars
6k
Forks
458
Avg merge
1d 9h
Merged PRs (30d)
41

Description

Bug description

This was first reported as a discussion in https://github.com/quarto-dev/quarto-cli/discussions/12227.

In https://github.com/quarto-dev/quarto-cli/blob/af454e8c07abe1c3570342c20e4fb62b33b907cb/src/project/serve/serve.ts#L182-L188 quarto preview is limited to the formats docusaurus-md and hugo-md.

But with the introduction of preview.serve in the project options, the above logic is out of date and should, instead, check if preview.serve is defined.

Steps to reproduce

Create a extension that defines project.preview.serve but uses a format other than docusaurus-md and hugo-md. For example,

title: Hugo
author: RStudio, PBC
organization: quarto
contributes:
  project:
    project:
      type: default
      detect:
        - ["hugo.toml", "content"]
        - ["config.toml", "content"]
        - ["config/_default/config.toml", "content"]
      render:
        - "**/*.qmd"
        - "**/*.ipynb"
      preview:
        serve:
          cmd: "hugo serve --port {port} --bind {host} --navigateToChanged"
          env:
            HUGO_RELATIVEURLS: "true"
          ready: "Web Server is available at"
    format: mwe-md
  formats:
    md:
      variant: gfm+yaml_metadata_block+definition_lists+smart
      prefer-html: true
      fig-format: retina
      fig-width: 8
      fig-height: 5
      wrap: preserve
Actual behavior

quarto preview shows

ERROR: The project '' is a default type project which doesn't support project wide previewing unless there is an 'index' file present.

Please preview an individual file within this project instead.

Stack trace:

Please preview an individual file within this project instead.
    at serveProject (file:///opt/quarto/bin/quarto.js:108009:23)
    at eventLoopTick (ext:core/01_core.js:175:7)
    at async Command.actionHandler (file:///opt/quarto/bin/quarto.js:108751:9)
    at async Command.execute (file:///opt/quarto/bin/quarto.js:8253:13)
    at async Command.parseCommand (file:///opt/quarto/bin/quarto.js:8143:20)
    at async quarto (file:///opt/quarto/bin/quarto.js:127391:9)
    at async file:///opt/quarto/bin/quarto.js:127418:9
    at async file:///opt/quarto/bin/quarto.js:127273:20
    at async mainRunner (file:///opt/quarto/bin/quarto.js:127275:9)
    at async file:///opt/quarto/bin/quarto.js:127409:5
Expected behavior

The custom preview server defined in project.preview.serve.cmd to run. For the provided example, quarto preview should show something like

Preparing to preview
...

Watching files for changes
Watching for changes in /home/raniere/git.gesis.org/rse/quarto-gesis/{content,themes}
Watching for config changes in /home/raniere/git.gesis.org/rse/quarto-gesis/hugo.toml, /home/raniere/git.gesis.org/rse/quarto-gesis/themes/hugo-gesis/hugo.toml
Start building sites … 
hugo v0.129.0+extended linux/amd64 BuildDate=2024-08-13T17:51:38Z VendorInfo=ubuntu:0.129.0-2


                   | EN  
-------------------+-----
  Pages            | 16  
  Paginator pages  |  0  
  Non-page files   |  1  
  Static files     |  1  
  Processed images |  0  
  Aliases          |  0  
  Cleaned          |  0  

Built in 65 ms
Browse at http://localhost:4825/
Environment: "development"
Serving pages from disk
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at http://localhost:4825/quarto-gesis/ (bind address 127.0.0.1)
Your environment
  • OS: Ubuntu 25.04 on WLS2
Quarto check output
Quarto 1.7.14
[✓] Checking environment information...
      Quarto cache location: /home/raniere/.cache/quarto
[✓] Checking versions of quarto binary dependencies...
      Pandoc version 3.4.0: OK
      Dart Sass version 1.70.0: OK
      Deno version 1.46.3: OK
      Typst version 0.11.0: OK
[✓] Checking versions of quarto dependencies......OK
[✓] Checking Quarto installation......OK
      Version: 1.7.14
      Path: /opt/quarto/bin

[✓] Checking tools....................OK
      TinyTeX: (not installed)
      Chromium: (not installed)

[✓] Checking LaTeX....................OK
      Tex:  (not detected)

[✓] Checking Chrome Headless....................OK
      Chrome:  (not detected)

[✓] Checking basic markdown render....OK

[✓] Checking Python 3 installation....OK
      Version: 3.13.2
      Path: /usr/bin/python3
      Jupyter: (None)

      Jupyter is not available in this Python installation.
      Install with python3 -m pip install jupyter

[✓] Checking R installation...........OK
      Version: 4.4.3
      Path: /usr/lib/R
      LibPaths:
        - /home/raniere/R/x86_64-pc-linux-gnu-library/4.4
        - /usr/local/lib/R/site-library
        - /usr/lib/R/site-library
        - /usr/lib/R/library
      knitr: 1.49
      rmarkdown: 2.29

[✓] Checking Knitr engine render......OK

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.