Giter Site home page Giter Site logo

postcss-cli's Introduction

npm node deps tests cover code style chat

PostCSS CLI

Install

npm i -g|-D postcss-cli

Usage

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.

Options

Name Type Default Description
-d, --dir {String} undefined Output Directory
-b, --base {String} undefined Use together with --dir for keeping directory structure.
-x, --ext {String} extname(output) Output File Extension
-o, --output {String} undefined Output File
-r, --replace {String} undefined Replace Input <=> Output
-p, --parser {String} undefined Custom PostCSS Parser
-s, --syntax {String} undefined Custom PostCSS Syntax
-t, --stringifier {String} undefined Custom PostCSS Stringifier
-w, --watch {Boolean} false Enable Watch Mode
--poll {Boolean} false Use polling for file watching
-u, --use {Array} [] PostCSS Plugins
-m, --map {Boolean} { inline: true } External Sourcemaps
--no-map {Boolean} false Disable Sourcemaps
-e, --env {String} process.env.NODE_ENV Sets $NODE_ENV
-c, --config {String} dirname(file) PostCSS Config Path postcss.config.js
-h, --help {Boolean} false CLI Help
-v, --version {Boolean} false CLI Version

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

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

Name Type Default Description
env {String} 'development' process.env.NODE_ENV
file {Object} dirname, basename, extname File
options {Object} map, parser, syntax, stringifier PostCSS 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
  }
})

postcss-cli's People

Contributors

pirxpilot avatar ryanzim avatar michael-ciniawsky avatar fnd avatar watilde avatar rnons avatar mkurz avatar arekkas avatar ai avatar corysimmons avatar drusellers avatar 8881 avatar georgiyordanov avatar sciyoshi avatar vtrrsl avatar zyy7259 avatar

Watchers

hadi avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.