#33353: Can't collect static files if don't have vendor's JavaScript source map
files
-------------------------------------+-------------------------------------
     Reporter:  Michael              |                    Owner:  nobody
         Type:  Bug                  |                   Status:  new
    Component:  contrib.staticfiles  |                  Version:  4.0
     Severity:  Release blocker      |               Resolution:
     Keywords:  manifeststatic       |             Triage Stage:
  storage                            |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Old description:

> Some django packages include JavaScript files, but not the sourcemaps,
> e.g. `django-json-widget` see: https://github.com/jmrivas86/django-json-
> widget/issues/63
>
> Django version 4 introduces a new features of adjusting the URLs of these
> source map urls. Unfortunately if one does not have these source maps,
> its generates an error and stops. This seems unncessary that one can't
> create a release in production due to an unused third party file.
>
> Although I think it should only print a warning, as dicussed below people
> feel its worthwhile to keep this breaking change. Could we please least
> makie it only raise an error if `settings.DEBUG == True`? That way in
> production where the sourcemaps are used less, its okay.
>
> Alternatively/Additionally, could there be a
> `settings.SOURCEMAP_EXCEPTIONS` (or some other name) that allows one to
> turn off this new behaviour.

New description:

 If one is using 3rd party JavaScript library, its often a minified
 Javascript file, that quite likely it has a source map url in a comment at
 the end. However its very likely that one does not have this source map
 files for the vendor libraries (probably only the vendor uses them).

 Django version 4 introduces a new features of adjusting the URLs of these
 source map urls. Unfortunately if one does not have these source maps, its
 generates an error and stops. This seems unncessary that one can't create
 a release due to an unused third party file.

 During storage post processes the files, if it can't file the file in the
 URL, please rather print a warning, or just skip replacing that url.

 I would recommend if its a sourcemap, not even printing a warning. For the
 CSS files it could be worth printing a warning.

--

Comment (by Adam Johnson):

 >  Could we please at least add a settings options to allow one to disable
 this new behaviour that breaks quite a few packages?

 The assertion "breaks quite a few packages" is not sustained by the
 evidence of *one* package. IMO there's still not enough evidence to
 revert.

 The package in question isn't tested with Django 3.2 nor 4.0. Try helping
 there!

 You're right that you can revert the behaviour for your project by
 defining your own static files storage with the pattern removed. I was
 just writing this version before your comment came in:

 {{{
 from django.contrib.staticfiles.storage import ManifestStaticFilesStorage


 class NoSourceMapsStorage(ManifestStaticFilesStorage):
     patterns = (
         (
             "*.css",
             (
 "(?P<matched>url\\(['\"]{0,1}\\s*(?P<url>.*?)[\"']{0,1}\\))",
                 (
                     "(?P<matched>@import\\s*[\"']\\s*(?P<url>.*?)[\"'])",
                     '@import url("%(url)s")',
                 ),
             ),
         ),
     )
 }}}

 Don't forget to set `STATICFILES_STORAGE` to point to your custom storage
 class.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/33353#comment:13>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/068.a0531ee893166cd5c8f705c728a46860%40djangoproject.com.

Reply via email to