diff --git a/company_site/company_site/settings/base.py b/company_site/company_site/settings/base.py index 011475c..a48a105 100644 --- a/company_site/company_site/settings/base.py +++ b/company_site/company_site/settings/base.py @@ -147,7 +147,7 @@ STATIC_URL = "static/" STATIC_ROOT = BASE_DIR / "staticfiles" STORAGES = { "staticfiles": { - "BACKEND": "whitenoise.storage.CompressedManifestStaticFilesStorage", + "BACKEND": "company_site.storage.TolerantManifestStaticFilesStorage", }, } diff --git a/company_site/company_site/storage.py b/company_site/company_site/storage.py new file mode 100644 index 0000000..3f4de45 --- /dev/null +++ b/company_site/company_site/storage.py @@ -0,0 +1,20 @@ +"""Custom static files storage. + +WhiteNoise's manifest storage post-processes JS/CSS during ``collectstatic`` and +strictly resolves every referenced file, including ``sourceMappingURL`` comments +in vendored bundles. Some third-party assets reference ``.map`` files that are +not shipped, which makes ``collectstatic`` fail hard. + +``TolerantManifestStaticFilesStorage`` leaves such unresolved references +untouched instead of raising, so a missing source map can't break the build. +""" + +from whitenoise.storage import CompressedManifestStaticFilesStorage + + +class TolerantManifestStaticFilesStorage(CompressedManifestStaticFilesStorage): + def _stored_name(self, name, hashed_files): + try: + return super()._stored_name(name, hashed_files) + except ValueError: + return name