Skip to content

Commit

Permalink
Add support for using .mjs files in extra_javascript
Browse files Browse the repository at this point in the history
  • Loading branch information
squidfunk committed May 30, 2023
1 parent 5af8bd3 commit 5acbf08
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 9 deletions.
2 changes: 1 addition & 1 deletion mkdocs/livereload/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ def _log_poll_request(cls, url, request_id):
def _guess_type(cls, path):
# MkDocs only ensures a few common types (as seen in livereload_tests.py::test_mime_types).
# Other uncommon types will not be accepted.
if path.endswith((".js", ".JS")):
if path.endswith((".js", ".JS", ".mjs", ".MJS")):
return "application/javascript"
if path.endswith(".gz"):
return "application/gzip"
Expand Down
2 changes: 1 addition & 1 deletion mkdocs/structure/files.py
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ def is_media_file(self) -> bool:

def is_javascript(self) -> bool:
"""Return True if file is a JavaScript file."""
return self.src_uri.endswith(('.js', '.javascript'))
return self.src_uri.endswith(('.js', '.javascript', '.mjs'))

def is_css(self) -> bool:
"""Return True if file is a CSS file."""
Expand Down
11 changes: 6 additions & 5 deletions mkdocs/tests/structure/file_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -366,24 +366,25 @@ def test_files(self):
File('foo/bar.html', '/path/to/docs', '/path/to/site', use_directory_urls=True),
File('foo/bar.jpg', '/path/to/docs', '/path/to/site', use_directory_urls=True),
File('foo/bar.js', '/path/to/docs', '/path/to/site', use_directory_urls=True),
File('foo/bar.mjs', '/path/to/docs', '/path/to/site', use_directory_urls=True),
File('foo/bar.css', '/path/to/docs', '/path/to/site', use_directory_urls=True),
]
files = Files(fs)
self.assertEqual([f for f in files], fs)
self.assertEqual(len(files), 6)
self.assertEqual(len(files), 7)
self.assertEqual(files.documentation_pages(), [fs[0], fs[1]])
self.assertEqual(files.static_pages(), [fs[2]])
self.assertEqual(files.media_files(), [fs[3], fs[4], fs[5]])
self.assertEqual(files.javascript_files(), [fs[4]])
self.assertEqual(files.css_files(), [fs[5]])
self.assertEqual(files.media_files(), [fs[3], fs[4], fs[5], fs[6]])
self.assertEqual(files.javascript_files(), [fs[4], fs[5]])
self.assertEqual(files.css_files(), [fs[6]])
self.assertEqual(files.get_file_from_path('foo/bar.jpg'), fs[3])
self.assertEqual(files.get_file_from_path('foo/bar.jpg'), fs[3])
self.assertEqual(files.get_file_from_path('missing.jpg'), None)
self.assertTrue(fs[2].src_uri in files.src_uris)
extra_file = File('extra.md', '/path/to/docs', '/path/to/site', use_directory_urls=True)
self.assertFalse(extra_file.src_uri in files.src_uris)
files.append(extra_file)
self.assertEqual(len(files), 7)
self.assertEqual(len(files), 8)
self.assertTrue(extra_file.src_uri in files.src_uris)
self.assertEqual(files.documentation_pages(), [fs[0], fs[1], extra_file])
files.remove(fs[1])
Expand Down
6 changes: 5 additions & 1 deletion mkdocs/themes/mkdocs/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,11 @@
</script>
<script src="{{ 'js/base.js'|url }}" defer></script>
{%- for path in extra_javascript %}
<script src="{{ path }}" defer></script>
{% if path.endswith(".mjs") %}
<script type="module" src="{{ path }}" defer></script>
{% else %}
<script src="{{ path }}" defer></script>
{% endif %}
{%- endfor %}
{%- endblock %}

Expand Down
6 changes: 5 additions & 1 deletion mkdocs/themes/readthedocs/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,11 @@
<script src="{{ 'js/theme_extra.js'|url }}" defer></script>
<script src="{{ 'js/theme.js'|url }}" defer></script>
{%- for path in extra_javascript %}
<script src="{{ path }}" defer></script>
{% if path.endswith(".mjs") %}
<script type="module" src="{{ path }}" defer></script>
{% else %}
<script src="{{ path }}" defer></script>
{% endif %}
{%- endfor %}
<script defer>
window.onload = function () {
Expand Down

0 comments on commit 5acbf08

Please sign in to comment.