3.1.3 • Published 8 years ago

postcss-cli-recursive v3.1.3

Weekly downloads
1
License
MIT
Repository
github
Last release
8 years ago

npm node deps tests cover code style chat

npm i -g|-D postcss-cli
postcss [input.css] [OPTIONS] [-o|--output output.css] [-w|--watch]

⚠️ If there are multiple input files, the --dir or --replace option must be passed.

cat input.css | postcss [OPTIONS] > output.css

⚠️ If no input files are passed, it reads from stdin. If neither -o, --dir, or --replace is passed, it writes to stdout.

NameTypeDefaultDescription
-d, --dir{String}undefinedOutput Directory
-b, --base{String}undefinedUse together with --dir for keeping directory structure.
-x, --ext{String}extname(output)Output File Extension
-o, --output{String}undefinedOutput File
-r, --replace{String}undefinedReplace Input <=> Output
-p, --parser{String}undefinedCustom PostCSS Parser
-s, --syntax{String}undefinedCustom PostCSS Syntax
-t, --stringifier{String}undefinedCustom PostCSS Stringifier
-w, --watch{Boolean}falseEnable Watch Mode
--poll{Boolean}falseUse polling for file watching
-u, --use{Array}[]PostCSS Plugins
-m, --map{Boolean}{ inline: true }External Sourcemaps
--no-map{Boolean}falseDisable Sourcemaps
-e, --env{String}process.env.NODE_ENVSets $NODE_ENV
-c, --config{String}dirname(file)PostCSS Config Path postcss.config.js
-h, --help{Boolean}falseCLI Help
-v, --version{Boolean}falseCLI Version

ℹ️ More details on custom parsers, stringifiers and syntaxes, can be found here.

Config

If you need to pass options to your plugins, or have a long plugin chain, you'll want to use a configuration file.

postcss.config.js

module.exports = {
  parser: 'sugarss',
  plugins: [
    require('postcss-import')({...options}),
    require('postcss-url')({ url: 'copy', useHash: true })
  ]
}

Note that you can not set the from or to options for postcss in the config file. They are set automatically based on the CLI arguments.

Context

For more advanced usage it's recommend to to use a function in postcss.config.js, this gives you access to the CLI context to dynamically apply options and plugins per file

NameTypeDefaultDescription
env{String}'development'process.env.NODE_ENV
file{Object}dirname, basename, extnameFile
options{Object}map, parser, syntax, stringifierPostCSS Options

postcss.config.js

module.exports = (ctx) => ({
  map: ctx.options.map,
  parser: ctx.file.extname === '.sss' ? 'sugarss' : false,
  plugins: {
    'postcss-import': { root: ctx.file.dirname }),
    'cssnano': ctx.env === 'production' ? {} : false
  }
})

⚠️ If you want to set options via CLI, it's mandatory to reference ctx.options in postcss.config.js

postcss input.sss -p sugarss -o output.css -m

postcss.config.js

module.exports = (ctx) => ({
  map: ctx.options.map,
  parser: ctx.options.parser,
  plugins: {
    'postcss-import': { root: ctx.file.dirname },
    'cssnano': ctx.env === 'production' ? {} : false
  }
})