quarto-dev / quarto-cli

Open-source scientific and technical publishing system built on Pandoc.
https://quarto.org
Other
3.74k stars 305 forks source link

site_libs dependency not updated when freeze is used. #10391

Open cderv opened 1 month ago

cderv commented 1 month ago

Observed behavior

I was testing revealjs/update-v5 branch in dev quarto-cli to render our demo slides at https://quarto.org/docs/presentations/revealjs/demo/

This new branch is using revealjs 5.1.0 and I would have expected this to be used.

cd quarto-web
# doing incremental render 
quarto render .\docs\presentations\revealjs\demo\index.qmd

Dependency in site_libs was updated

❯ grep -2 "revealjs[.]com" .\_site\site_libs\revealjs\dist\reveal.js
/*!
* reveal.js 5.1.0
* https://revealjs.com
* MIT licensed
*

But freezer is still using old version

❯ grep -2 "revealjs[.]com" .\_freeze\site_libs\revealjs\dist\reveal.js
/*!
* reveal.js 4.3.1
* https://revealjs.com
* MIT licensed
*

which implies that with freeze: true in our quarto-web project when doing

quarto render

the freezer is used for site_libs it seems, and the old revealjs is used... After quarto render I get

❯ grep -2 "revealjs[.]com" .\_site\site_libs\revealjs\dist\reveal.js
/*!
* reveal.js 4.3.1
* https://revealjs.com
* MIT licensed
*

back to old one.

If I delete the file, then the new version is put in freezer.

So I believe this is a conflict similar to our "different themes in websites", but when using freeze. All the revealjs presentation in the website are using same file in site_libs/.

It seems site_libs in the freezer will always win. So it needs to be updated somehow.

I need to understand this, and see what is the recommended way : Manuel invalidation or a fix in our site_libs handling...

cderv commented 1 month ago

And it seems we also have another copy of the dependency in .quarto project hidden folder

❯ grep -2 "revealjs[.]com" .\.quarto\_freeze\site_libs\revealjs\dist\reveal.js
/*!
* reveal.js 4.3.1
* https://revealjs.com
* MIT licensed
*

Not sure how it behave when new updated quarto with new revealjs update is used. 🤔

I'll try to build an easier example to investigate all this...

cderv commented 1 month ago

I'll try to build an easier example to investigate all this...

right now I can't reproduce on a simple website... It happens only inside quarto-web

cscheid commented 1 month ago

I wouldn't touch the freeze implementation without a longer discussion with @jjallaire and @dragonstyle; there's a lot of corner cases involved.