|
|
# PostCSS and Source Maps
|
|
|
|
|
|
PostCSS has great [source maps] support. It can read and interpret maps
|
|
|
from previous transformation steps, autodetect the format that you expect,
|
|
|
and output both external and inline maps.
|
|
|
|
|
|
To ensure that you generate an accurate source map, you must indicate the input
|
|
|
and output CSS file paths — using the options `from` and `to`, respectively.
|
|
|
|
|
|
To generate a new source map with the default options, simply set `map: true`.
|
|
|
This will generate an inline source map that contains the source content.
|
|
|
If you don’t want the map inlined, you can set `map.inline: false`.
|
|
|
|
|
|
```js
|
|
|
processor
|
|
|
.process(css, {
|
|
|
from: 'app.sass.css',
|
|
|
to: 'app.css',
|
|
|
map: { inline: false }
|
|
|
})
|
|
|
.then(result => {
|
|
|
result.map //=> '{ "version":3,
|
|
|
// "file":"app.css",
|
|
|
// "sources":["app.sass"],
|
|
|
// "mappings":"AAAA,KAAI" }'
|
|
|
})
|
|
|
```
|
|
|
|
|
|
If PostCSS finds source maps from a previous transformation,
|
|
|
it will automatically update that source map with the same options.
|
|
|
|
|
|
## Options
|
|
|
|
|
|
If you want more control over source map generation, you can define the `map`
|
|
|
option as an object with the following parameters:
|
|
|
|
|
|
* `inline` boolean: indicates that the source map should be embedded
|
|
|
in the output CSS as a Base64-encoded comment. By default, it is `true`.
|
|
|
But if all previous maps are external, not inline, PostCSS will not embed
|
|
|
the map even if you do not set this option.
|
|
|
|
|
|
If you have an inline source map, the `result.map` property will be empty,
|
|
|
as the source map will be contained within the text of `result.css`.
|
|
|
|
|
|
* `prev` string, object, boolean or function: source map content from
|
|
|
a previous processing step (for example, Sass compilation).
|
|
|
PostCSS will try to read the previous source map automatically
|
|
|
(based on comments within the source CSS), but you can use this option
|
|
|
to identify it manually. If desired, you can omit the previous map
|
|
|
with `prev: false`.
|
|
|
|
|
|
* `sourcesContent` boolean: indicates that PostCSS should set the origin
|
|
|
content (for example, Sass source) of the source map. By default,
|
|
|
it is `true`. But if all previous maps do not contain sources content,
|
|
|
PostCSS will also leave it out even if you do not set this option.
|
|
|
|
|
|
* `annotation` boolean or string: indicates that PostCSS should add annotation
|
|
|
comments to the CSS. By default, PostCSS will always add a comment with a path
|
|
|
to the source map. PostCSS will not add annotations to CSS files that
|
|
|
do not contain any comments.
|
|
|
|
|
|
By default, PostCSS presumes that you want to save the source map as
|
|
|
`opts.to + '.map'` and will use this path in the annotation comment.
|
|
|
A different path can be set by providing a string value for `annotation`.
|
|
|
|
|
|
If you have set `inline: true`, annotation cannot be disabled.
|
|
|
|
|
|
* `from` string: by default, PostCSS will set the `sources` property of the map
|
|
|
to the value of the `from` option. If you want to override this behaviour, you
|
|
|
can use `map.from` to explicitly set the source map's `sources` property.
|
|
|
Path should be absolute or relative from generated file
|
|
|
(`to` option in `process()` method).
|
|
|
|
|
|
[source maps]: http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/
|