Open danschultz opened 9 years ago
Looks like version 5.1.0 inlines the source maps as a data uri.
Running autoprefixer -m -o main.prefixed.css main.css
will output:
.movie-detail .poster-image {
min-width: 200px;
width: 200px;
}
.movie-detail .poster-image:empty {
height: 300px;
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsMkJBQTBCO0VBQzFCLHNCQUFjO0VBQWQsdUJBQWM7RUFBZCxzQkFBYztFQUFkLGVBQWM7RUFDZCwwQkFBd0I7RUFBeEIsaUNBQXdCO01BQXhCLHVCQUF3QjtVQUF4Qix5QkFBd0I7RUFDekI7O0FBRUQ7RUFDRSx3QkFBdUI7RUFDdkIsd0JBQXVCO0VBQ3ZCLG9CQUFtQjtFQUNuQixjQUFhO0VBQ2Q7O0FBRUQ7RUFDRSxzQkFBYztFQUFkLHVCQUFjO0VBQWQsc0JBQWM7RUFBZCxlQUFjO0VBQ2QsY0FBYTtFQUNkOztBQUVEO0VBQ0UsNEJBQW1CO01BQW5CLDZCQUFtQjtVQUFuQixvQkFBbUI7RUFDcEI7O0FBRUQ7RUFDRSxjQUFhO0VBQ2Isb0JBQW1CO0VBQ3BCOztBQUVEO0VBQ0UsaUJBQWdCO0VBQ2pCOztBQUVEOztFQUVDOztBQUVEO0VBQ0UsY0FBYTtFQUNkOztBQUVEO0VBQ0Usc0JBQWM7RUFBZCx1QkFBYztFQUFkLHNCQUFjO0VBQWQsZUFBYztFQUNkLDJCQUFvQjtFQUFwQiw2QkFBb0I7TUFBcEIsd0JBQW9CO1VBQXBCLHFCQUFvQjtFQUNyQjs7QUFFRDtFQUNFLG9CQUFtQjtFQUNwQjs7QUFFRDtFQUNFLDBCQUF3QjtFQUF4QixpQ0FBd0I7TUFBeEIsdUJBQXdCO1VBQXhCLHlCQUF3QjtFQUN4Qiw0QkFBbUI7TUFBbkIsNkJBQW1CO1VBQW5CLG9CQUFtQjtFQUNwQjs7QUFFRDtFQUNFLGlCQUFnQjtFQUNqQjs7QUFFRDtFQUNFLDhCQUE2QjtFQUM3QixzQkFBcUI7RUFDdEI7O0FBRUQ7RUFDRSxxQkFBb0I7RUFDckI7O0FBRUQ7RUFDRSxrQkFBaUI7RUFDbEI7O0FBRUQ7RUFDRSw2QkFBNEI7RUFDNUIsdUJBQXNCO0VBQ3RCLG1CQUFrQjtFQUNuQjs7QUFFRDtFQUNFLGFBQVk7RUFDYjs7QUFFRDtFQUNFLGlCQUFnQjtFQUNoQixhQUFZO0VBQ2I7O0FBRUQ7RUFDRSxlQUFjO0VBQ2Y7O0FBRUQ7RUFDRSxrQkFBaUI7RUFDakIsY0FBYTtFQUNkOztBQUVEO0VBQ0UsZUFBYztFQUNmIiwiZmlsZSI6Im1haW4ucHJlZml4ZWQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiYm9keSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4udGlsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgd2lkdGg6IDYwMHB4O1xufVxuXG4uYXBwbGljYXRpb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5ob21lIHtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xufVxuXG4uc2VhcmNoIHtcbiAgcGFkZGluZzogMWVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5zZWFyY2gtZmllbGQge1xuICBtYXJnaW46IDAuNWVtIDA7XG59XG5cbi5zZWFyY2gtYnV0dG9uIHtcblxufVxuXG4ucmVzdWx0cy1jb3VudCB7XG4gIHBhZGRpbmc6IDFlbTtcbn1cblxuLm1vdmllIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLm1vdmllOmxhc3QtY2hpbGQge1xuICBwYWRkaW5nLXJpZ2h0OiAxZW07XG59XG5cbi5tb3ZpZS1kZXRhaWwge1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xufVxuXG4ubW92aWUtbWV0YSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbn1cblxuLm1vdmllLW1ldGE6bm90KDpsYXN0LWNoaWxkKSB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGdyZXk7XG4gIHBhZGRpbmctcmlnaHQ6IDAuNWVtO1xufVxuXG4ubW92aWUtbWV0YTpub3QoOmZpcnN0LWNoaWxkKSB7XG4gIHBhZGRpbmctbGVmdDogMC41ZW07XG59XG5cbi5tb3ZpZS1tZXRhLWl0ZW1zLCAubW92aWUtY3JlZGl0IHtcbiAgbWFyZ2luOiAwLjc1ZW0gMDtcbn1cblxuLnBvc3Rlci1pbWFnZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JleTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDFlbTtcbn1cblxuLnBvc3Rlci1pbWFnZSBpbWcge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLm1vdmllLXN1bW1hcnkgLnBvc3Rlci1pbWFnZSB7XG4gIG1pbi13aWR0aDogNzVweDtcbiAgd2lkdGg6IDc1cHg7XG59XG5cbi5tb3ZpZS1zdW1tYXJ5IC5wb3N0ZXItaW1hZ2U6ZW1wdHkge1xuICBoZWlnaHQ6IDEwOHB4O1xufVxuXG4ubW92aWUtZGV0YWlsIC5wb3N0ZXItaW1hZ2Uge1xuICBtaW4td2lkdGg6IDIwMHB4O1xuICB3aWR0aDogMjAwcHg7XG59XG5cbi5tb3ZpZS1kZXRhaWwgLnBvc3Rlci1pbWFnZTplbXB0eSB7XG4gIGhlaWdodDogMzAwcHg7XG59Il19 */
There's an option --no-inline-map
that doesn't inline the source maps.
According to the change log, they started to inline source maps starting with version 4.
I find this default a bit puzzling as it increases the size of the outputted CSS, and would require separate options for dev/production builds. Would seem better to just output a separate map file by default and have clients decide if they wanted to load source maps or not. I couldn't find anything in their issue tracker that describes the motivation behind this change.
I'll submit a PR that adds --no-inline-map
when calling autoprefixer.
I am not sure why they've started to inline source maps, but it is way much easier to implement transformers that doesn't need to search for existing source maps. Right now, this transformer can find existing source maps only when they have the same base path as css file. I'd prefer to get rid of temp directories, etc, and just use inline source maps everywhere. Do we really need to support source maps that aren't inlined and also generate "no-inline" version?
I've uploaded new version to pub with your PR, but I really want to remove support for source maps that aren't inlined. It is possible just to implement one more transformer that will work as a last step in css transformations, it will remove inline css and generate two separate files .css and .map.
I think the implementation you have at dccdd0f7971445b8448f9ba4fbe2e3e788d9bc99 (v0.3) is a good default. I'd still like to have the option of generating a separate source map file for debugging CSS in production.
How did you see the additional transformer as working?
Just simple transformer that reads .css
files and if it finds inline source map, it will remove it and create .map
file. Something like this: https://github.com/localvoid/source_map_transformer
So we can just use inline source maps everywhere in our css pipeline:
transformers:
- sass
- autoprefixer_transformer:
browsers:
- "last 2 versions"
- clean_css_transformer:
source_map: true
- source_map_transformer:
source_map: true
When running
pub build
the transformer errors when it tries to open the source map.I'm using autoprefixer version 5.1.0.