A Metalsmith plugin that sends your CSS through any PostCSS plugins.
npm install metalsmith-postcss
If you haven't checked out Metalsmith before, head over to their website and check out the documentation.
Using the JavaScript api for Metalsmith,
just add the postcss package name, optionally with it’s
options, to your .use()
directives. Here is an example
using postcss-pseudoelements
and postcss-nested
to
transform your source files.
var postcss = require('metalsmith-postcss');
metalsmith.use(postcss({
plugins: {
'postcss-pseudoelements': {}
'postcss-nested': {}
}
}));
By default, files with .css
extension will be parsed. This may be overridden
by providing a custom pattern e.g.
metalsmith.use(postcss({
pattern: '*.postcss',
plugins: { ... }
}));
Using the Metalsmith CLI, just add the postcss package name,
optionally with it’s options, to your metalsmith.json
config.
Here is an example using postcss-pseudoelements
and postcss-nested
to transform your source files.
"metalsmith-postcss": {
"plugins": {
"postcss-pseudoelements": {},
"postcss-nested": {}
},
"map": true
}
Sometime in PostCSS, plugins need to be defined in a certain order and JavaScript Objects cannot guarantee the order of keys in an object. Therefore, you are able to specify PostCSS plugins using an array of objects(which can guarantee the order of loading).
"metalsmith-postcss": {
"plugins": [
"postcss-pseudoelements",
{
"postcss-nested": {
"some": "config"
}
}
]
}
This plugin doesn't generate sourcemaps by default. However, you can enable them using several ways.
Add map: true
to the options
argument to get your
sourcemaps written into the source file.
metalsmith.use(postcss({
plugins: {},
map: true
}));
Behind the scenes, this resolves to the following:
metalsmith.use(postcss({
plugins: {},
map: {
inline: true
}
}));
If you don't want to have your files polluted with sourcemaps,
just set inline: false
. Using that, you'll get .map
files
generated beside your sources.
metalsmith.use(postcss({
plugins: {},
map: {
inline: false
}
}));
To run the tests use:
npm test