# postcss-cli

> CLI for PostCSS

Latest version **12.0.0** (published 2026-09-04) · MIT license · 0 weekly downloads

## Install

```sh
npm install postcss-cli
pnpm add postcss-cli
yarn add postcss-cli
bun add postcss-cli
```

Provides the command `postcss`.

## Health

**Score 60/100 (C)** — status: active.

Positive: esm support; no vulnerabilities; recently updated; high maintenance score.

Warnings: low downloads; no types.

## Facts

| | |
|---|---|
| Version | 12.0.0 |
| Published | 2026-09-04 |
| First published | 2015-03-12 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM |
| Node | >=22 |
| Dependencies | 10 |
| Unpacked size | 21.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 857 |
| Maintainers | ai, ryanzim |
| Keywords | cli, postcss, postcss-runner |

## Links

- npm: https://www.npmjs.com/package/postcss-cli
- Repository: https://github.com/postcss/postcss-cli
- Homepage: https://github.com/postcss/postcss-cli#readme
- Issues: https://github.com/postcss/postcss-cli/issues
- npm.io page: https://npm.io/package/postcss-cli

## Dependencies (10)

- [slash](https://npm.io/package/slash.md) ^5.0.0
- [yargs](https://npm.io/package/yargs.md) ^18.0.0
- [chokidar](https://npm.io/package/chokidar.md) ^5.0.0
- [picocolors](https://npm.io/package/picocolors.md) ^1.0.0
- [read-cache](https://npm.io/package/read-cache.md) ^1.0.0
- [tinyglobby](https://npm.io/package/tinyglobby.md) ^0.2.12
- [pretty-hrtime](https://npm.io/package/pretty-hrtime.md) ^1.0.3
- [dependency-graph](https://npm.io/package/dependency-graph.md) ^1.0.0
- [postcss-reporter](https://npm.io/package/postcss-reporter.md) ^7.0.0
- [postcss-load-config](https://npm.io/package/postcss-load-config.md) ^6.0.0

## Alternatives

- [@salesforce/cli](https://npm.io/package/@salesforce/cli.md) — 389.7K weekly downloads
- [@mintlify/cli](https://npm.io/package/@mintlify/cli.md) — 208.9K weekly downloads
- [@grafana/e2e-selectors](https://npm.io/package/@grafana/e2e-selectors.md) — 128.7K weekly downloads
- [mintlify](https://npm.io/package/mintlify.md) — 112.0K weekly downloads
- [@intlayer/cli](https://npm.io/package/@intlayer/cli.md) — 22.8K weekly downloads

## Recent versions

- 12.0.0 (latest) — 2026-09-04
- 11.0.1 — 2025-03-12
- 11.0.0 — 2023-12-05
- 10.1.0 — 2022-11-29
- 10.0.0 — 2022-06-30
- 9.1.0 — 2021-12-10
- 9.0.2 — 2021-11-04
- 9.0.1 — 2021-09-28
- 9.0.0 — 2021-09-24
- 8.3.1 — 2020-12-12
- 8.3.0 — 2020-11-17
- 8.2.0 — 2020-10-29
- 8.1.0 — 2020-10-08
- 8.0.0 — 2020-09-21
- 7.1.2 — 2020-09-01
- … 44 more at https://npm.io/package/postcss-cli/versions

## README

[![npm][npm]][npm-url]
[![node][node]][node-url]
[![tests][tests]][tests-url]

<div align="center">
  <img width="100" height="100" title="CLI" src="https://raw.githubusercontent.com/postcss/postcss-cli/HEAD/logo.svg">
  <a href="https://github.com/postcss/postcss">
    <img width="110" height="110" title="PostCSS" src="http://postcss.github.io/postcss/logo.svg" hspace="10">
  </a>
  <h1>PostCSS CLI</h1>
</div>

PostCSS CLI is a command line interface for [PostCSS](https://postcss.org/)

<h2 align="center">Install</h2>

```bash
npm i -D postcss postcss-cli
```

<h2 align="center">Usage</h2>

```
Usage:
  postcss [input.css] [OPTIONS] [-o|--output output.css] [--watch|-w]
  postcss <input.css>... [OPTIONS] --dir <output-directory> [--watch|-w]
  postcss <input-directory> [OPTIONS] --dir <output-directory> [--watch|-w]
  postcss <input-glob-pattern> [OPTIONS] --dir <output-directory> [--watch|-w]
  postcss <input.css>... [OPTIONS] --replace

Basic options:
  -o, --output   Output file                                            [string]
  -d, --dir      Output directory                                       [string]
  -r, --replace  Replace (overwrite) the input file                    [boolean]
  -m, --map      Create an external sourcemap
  --no-map       Disable the default inline sourcemaps
  -w, --watch    Watch files for changes and recompile as needed       [boolean]
  --verbose      Be verbose                                            [boolean]
  --env          A shortcut for setting NODE_ENV                        [string]

Options for use without a config file:
  -u, --use      List of postcss plugins to use                          [array]
  --parser       Custom postcss parser                                  [string]
  --stringifier  Custom postcss stringifier                             [string]
  --syntax       Custom postcss syntax                                  [string]

Options for use with --dir:
  --ext   Override the output file extension; for use with --dir        [string]
  --base  Mirror the directory structure relative to this path in the output
          directory, for use with --dir                                 [string]

Advanced options:
  --include-dotfiles  Enable glob to match files/dirs that begin with "."
                                                                       [boolean]
  --poll              Use polling for file watching. Can optionally pass polling
                      interval; default 100 ms
  --config            Set a custom directory to look for a config file  [string]

Options:
  --version   Show version number                                      [boolean]
  -h, --help  Show help                                                [boolean]

Examples:
  postcss input.css -o output.css                       Basic usage
  postcss src/**/*.css --base src --dir build           Glob Pattern & output
  cat input.css | postcss -u autoprefixer > output.css  Piping input & output

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

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

Input files may contain globs (e.g. src/**/*.css). If you pass an input
directory, it will process all files in the directory and any subdirectories,
respecting the glob pattern.
```

> ℹ️ More details on custom parsers, stringifiers and syntaxes, can be found [here](https://github.com/postcss/postcss#syntaxes).

### [Config](https://github.com/postcss/postcss-load-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**

```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 recommended 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**

```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`

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

**postcss.config.js**

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

[npm]: https://img.shields.io/npm/v/postcss-cli.svg
[npm-url]: https://npmjs.com/package/postcss-cli
[node]: https://img.shields.io/node/v/postcss-cli.svg
[node-url]: https://nodejs.org/
[tests]: https://img.shields.io/github/workflow/status/postcss/postcss-cli/Node.js%20CI/master
[tests-url]: https://github.com/postcss/postcss-cli/actions?query=branch%3Amaster

---
_Source: https://npm.io/package/postcss-cli · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
