Skip to content

[AssetMapper] Adding info that always *all* entrypoints are included… #20789

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: 6.4
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion frontend/asset_mapper.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1081,8 +1081,10 @@ loads the ``app.js`` file *and* the ``checkout.js`` file. It's important
to *not* call ``parent()`` in the ``importmap`` block. Each page can only
have *one* importmap, so ``importmap()`` must be called exactly once.

If, for some reason, you want to execute *only* ``checkout.js``
If you want to execute *only* ``checkout.js``
and *not* ``app.js``, pass only ``checkout`` to ``importmap()``.
In this case, still **both** files are added to ``<script type="importmap">``,
but only ``checkout.js`` is executed (via ``<link rel="modulepreload">``).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not how they are loaded: see the previous paragraph (script type = module)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure what you mean; how would you suggest to change it?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The execution of checkout.js is due to the <script type="module"> generated

(it is explained just a couple of lines before in the page)

To be honest i'm not sure there is much to add in here

Copy link
Contributor Author

@ThomasLandauer ThomasLandauer Mar 21, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, I see - I now changed it.

Reason for adding it: I was confused to still see everything in importmap. And that issue shows that others are confused too... ;-)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do agree. Still, not a reason to reexplain what has been said a couple lines before, mixing two very different notions: the entrypoint called, and the composition of the importmap.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're referring to this sentence, right?:

By passing both app and checkout, the importmap() function will output the importmap and also add a <script type="module"> tag that loads the app.js file and the checkout.js file.

What I'm missing (and didn't know since yesterday) is the fact that the importmap is just a map with shortcuts of possible imports, and seeing an entry there doesn't mean that it's actually loaded.

So what about splitting those two aspects (this one, and the parent() issue) to two separate paragraphs? I could come up with a suggestion, but I have a question here:

Each page can only have one importmap, so importmap() must be called exactly once.

Is the bolded "importmap" referring to <script type="importmap"> (i.e. is this some restriction of the HTML standard)? Or is it about Twig's {{ impormap() }}?
=> Who is forbidding to have multiple importmaps?


Using a Content Security Policy (CSP)
-------------------------------------
Expand Down