aboutsummaryrefslogtreecommitdiff
path: root/node_modules/postcss-cli
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2019-10-06 21:37:45 +0200
committerDimitri Staessens <dimitri@ouroboros.rocks>2019-10-06 21:37:45 +0200
commit3c51c3be85bb0d1bdb87ea0d6632f1c256912f27 (patch)
treec7ccc8279b12c4f7bdbbb4270d617e48f51722e4 /node_modules/postcss-cli
parent412c104bebc507bea9c94fd53b5bdc4b64cbfe31 (diff)
downloadwebsite-3c51c3be85bb0d1bdb87ea0d6632f1c256912f27.tar.gz
website-3c51c3be85bb0d1bdb87ea0d6632f1c256912f27.zip
build: Add some required modules for node
Diffstat (limited to 'node_modules/postcss-cli')
-rw-r--r--node_modules/postcss-cli/CHANGELOG.md224
-rw-r--r--node_modules/postcss-cli/LICENSE21
-rw-r--r--node_modules/postcss-cli/README.md148
-rwxr-xr-xnode_modules/postcss-cli/bin/postcss3
-rw-r--r--node_modules/postcss-cli/index.js284
-rw-r--r--node_modules/postcss-cli/lib/args.js146
-rw-r--r--node_modules/postcss-cli/lib/depGraph.js22
-rw-r--r--node_modules/postcss-cli/package.json103
8 files changed, 951 insertions, 0 deletions
diff --git a/node_modules/postcss-cli/CHANGELOG.md b/node_modules/postcss-cli/CHANGELOG.md
new file mode 100644
index 0000000..4f5db19
--- /dev/null
+++ b/node_modules/postcss-cli/CHANGELOG.md
@@ -0,0 +1,224 @@
+# 5.0.0 / 2018-02-06
+
+- Now allows passing a directory as the input (all files in the directory will be processed)
+- The CLI is now silent by default; added `--verbose` flag for if you want noisy logs
+- Doesn't exit watch mode when there's an error in the plugin chain
+- Removed non-obvious shorthand arguments (`-x`, `-p`, `-s`, `-t`, `-e`, `-b`, & `-c`). Also removed `-v` as an alias for `--version`.
+- Prevent stupid option combinations like `--dir` & `-o`, and `--watch` & `--replace`
+- Doesn't allow `--watch` when writing to STDOUT
+
+# 4.1.1 / 2017-08-17
+
+- Fixed bug with `--config`
+- Upgraded dependencies
+
+# 4.1.0 / 2017-06-10
+
+- Can now pass a number to `--poll` to set poll interval
+- Updated `postcss-reporter` dependency to v4.0.0
+
+# 4.0.0 / 2017-05-09
+
+- **BREAKING:** Upgrade postcss to v6.x
+
+# 3.2.0 / 2017-04-21
+
+- Added `--base` CLI option for keeping directory structure
+
+# 3.1.1 / 2017-04-04
+
+- Fixed `files` property in `package.json`; `lib/` folder wasn't included in v3.1.0
+
+# 3.1.0 / 2017-04-04
+
+- Improved incremental rebuilds for better performance in watch mode.
+- Switched to `read-cache` for file reading for better performance.
+- Set a dummy filename when reading from stdin to help plugins like autoprefixer find config files.
+- Updated `fs-promise` dependency.
+
+# 3.0.0 / 2017-03-15
+
+## Changes since 3.0.0-beta
+
+### Breaking Changes
+
+- Don't exit on `CssSyntaxError` in watch mode. v2 behaved this way, but v3.0.0-beta didn't.
+- Error out if `from` or `to` options are set in the config file. Use command line arguments instead.
+
+### New Features
+
+- Add `--poll` option. v2 had this, however, this new implementation removes the capability to set the interval, which was supported in v2.
+
+### Bugfixes
+
+- Set `from` option for correct sourcemaps
+- Fix `--watch`'s glob handling
+- Fix error handling
+
+## Changes since v2.6.0
+
+### Breaking Changes
+
+- Uses https://github.com/michael-ciniawsky/postcss-load-config for config files. Dropped support for the v2 config file format.
+- Can't set input files in config file; pass input files on the command line instead.
+- `--use` accepts a list of plugins. This may cause issues if you have your list of css files at the end of your command.
+- Can't pass options to plugins via `--plugin.key=value` anymore, use a config file.
+- Changed usage of the `--map` option; use `--map` for external sourcemaps, `--no-map` to disable all maps. Inline sourcemaps are default.
+- Removed `--log` flag; this behavior is now default.
+- Removed the `--local-plugins` flag; same result can be achieved with `postcss.config.js`.
+- Removed the global `watchCSS` handler, plugins that import/rely on other files should use a `dependency` message instead.
+- Changed behavior of the `--poll` option; no longer accepts an integer `interval`.
+
+### New Features
+
+- `--ext` (`-x`) option allows you to set the file extensions for your output files when using `--dir`.
+- `--env` allows you to set `NODE_ENV` in a cross-platform manner.
+
+Migration guide for upgrading from v2: https://github.com/postcss/postcss-cli/wiki/Migrating-from-v2-to-v3
+
+# 3.0.0-beta / 2017-03-17
+
+## Breaking Changes
+
+- Uses https://github.com/michael-ciniawsky/postcss-load-config for config files. Dropped support for the v2 config file format.
+- Can't set input files in config file; pass input files on the command line instead.
+- `--use` accepts a list of plugins. This may cause issues if you have your list of css files at the end of your command.
+- Can't pass options to plugins via `--plugin.key=value` anymore, use a config file.
+- Changed usage of the `--map` option; use `--map` for external sourcemaps, `--no-map` to disable all maps. Inline sourcemaps are default.
+- Removed `--log` flag; this behavior is now default.
+- Removed the `--local-plugins` flag; same result can be achieved with `postcss.config.js`.
+- Removed the global `watchCSS` handler, plugins that import/rely on other files should use a `dependency` message instead.
+
+## New Features
+
+- `--ext` (`-x`) option allows you to set the file extensions for your output files when using `--dir`.
+- `--env` allows you to set `NODE_ENV` in a cross-platform manner.
+
+Migration guide: https://github.com/postcss/postcss-cli/wiki/Migrating-from-v2-to-v3
+
+# 2.6.0 / 2016-08-30
+
+- Add log option
+- Update postcss-import to v8.1.2 from v7.1.0
+- Update globby to v4.1.0 from v3.0.1
+- Update postcss-url to v5.1.2 from v4.0.0
+- Update jshint to v2.9.2 from v2.6.3
+- Update chokidar to v1.5.1 from v1.0.3
+- Update yargs to v4.7.1 from v3.32.0
+- Support es6 export
+- Allow running without plugins
+- Add test for --poll
+- Add --poll flag
+
+# 2.5.2 / 2016-04-18
+
+- Fix typo in help message: -use => [--use|-u]
+- npm install --save mkdirp
+- Support mkdirp to create dest path if it doesn't exists
+- Fix booleans in config file
+
+# 2.5.1 / 2016-02-11
+
+- fix `input` argument
+
+# 2.5.0 / 2016-01-30
+
+- move to postcss/postcss-cli repository
+- Update Readme.md
+
+# 2.4.1 / 2016-01-27
+
+- improve warning disply format
+
+# 2.4.0 / 2016-01-15
+
+- add support for source maps
+
+# 2.3.3 / 2015-12-28
+
+- add usage example for `local-plugins` option in config file
+
+# 2.3.2 / 2015-10-27
+
+- auto-configure postcss-import support
+- add support for watching multiple entry points
+
+# 2.3.1 / 2015-10-25
+
+- update Travis config
+- upgrade postcss-import dependency - fix deprecation warnings during make test-watch
+
+# 2.3.0 / 2015-10-24
+
+- add --local-plugins option that lets postcss-cli to look for plugins in current directory
+
+# 2.2.0 / 2015-10-09
+
+- add support for --replace|-r - if used input files are replaced with generated output
+- refactor support for custom syntax options
+
+# 2.1.1 / 2015-10-08
+
+- add globby to support wildcards in Windows
+- remove obsolete note on postcss-import compatibility
+
+# 2.1.0 / 2015-09-01
+
+- add support for PostCSS 5.0 custom syntax options
+
+# 2.0.0 / 2015-08-24
+
+- remove support for --safe option
+- switch to using postcss 5.x
+
+# 1.5.0 / 2015-07-20
+
+- add watch mode (-w|--watch) in which postcss-cli observes and recompiles inputs whenever they change
+- update neo-async dependency to released version
+- update postcss-url dependency (used in tests only)
+
+# 1.4.0 / 2015-07-12
+
+- allow specifying input file via config file
+- allow specifying -u|--use via config file
+
+# 1.3.1 / 2015-05-03
+
+- update npm keyword: postcssrunner -> postcss-runner
+
+# 1.3.0 / 2015-04-28
+
+- add support for stdin/stdout if no input/output file specified
+
+# 1.2.1 / 2015-04-20
+
+- fix typo in readme
+
+# 1.2.0 / 2015-04-02
+
+- display warnings and errors
+- stop testing on node 0.10
+
+# 1.1.0 / 2015-03-28
+
+- prefer postcss async API if available
+
+# 1.0.0 / 2015-03-22
+
+- use official yargs version
+- add support for multiple input files
+
+# 0.3.0 / 2015-03-19
+
+- support JS format as plugins config
+
+# 0.2.0 / 2015-03-13
+
+- use autoprefixer instead of autoprefixer-core
+- change short options for --use from `p` to `u`
+- add -v|--version support
+- add --safe option to enable postcss safe mode
+
+# 0.1.0 / 2015-03-11
+
+- initial implementaion
diff --git a/node_modules/postcss-cli/LICENSE b/node_modules/postcss-cli/LICENSE
new file mode 100644
index 0000000..e4d2d4a
--- /dev/null
+++ b/node_modules/postcss-cli/LICENSE
@@ -0,0 +1,21 @@
+License (MIT)
+
+Copyright (c) 2016 Michael Ciniawsky
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/postcss-cli/README.md b/node_modules/postcss-cli/README.md
new file mode 100644
index 0000000..80d59dd
--- /dev/null
+++ b/node_modules/postcss-cli/README.md
@@ -0,0 +1,148 @@
+[![npm][npm]][npm-url]
+[![node][node]][node-url]
+[![deps][deps]][deps-url]
+[![Greenkeeper badge](https://badges.greenkeeper.io/postcss/postcss-cli.svg)](https://greenkeeper.io/)
+[![tests][tests]][tests-url]
+[![cover][cover]][cover-url]
+[![chat][chat]][chat-url]
+
+<div align="center">
+ <img width="100" height="100" title="CLI" src="http://postcss.github.io/postcss-cli/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>
+
+<h2 align="center">Install</h2>
+
+```bash
+npm i -g|-D 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]
+ --map, -m Create an external sourcemap
+ --no-map Disable the default inline sourcemaps
+ --verbose Be verbose [boolean]
+ --watch, -w Watch files for changes and recompile as needed [boolean]
+ --env A shortcut for setting NODE_ENV [string]
+
+Options for when not using 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]
+
+Advanced options:
+ --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]
+ --poll Use polling for file watching. Can optionally pass polling interval;
+ default 100 ms
+ --config Set a custom path 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 (ie: 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/michael-ciniawsky/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 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**
+
+```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/
+[deps]: https://img.shields.io/gemnasium/postcss/postcss-cli.svg
+[deps-url]: https://gemnasium.com/postcss/postcss-cli
+[tests]: http://img.shields.io/travis/postcss/postcss-cli/master.svg
+[tests-url]: https://travis-ci.org/postcss/postcss-cli
+[cover]: https://img.shields.io/coveralls/postcss/postcss-cli/master.svg
+[cover-url]: https://coveralls.io/github/postcss/postcss-cli
+[chat]: https://img.shields.io/gitter/room/postcss/postcss.svg
+[chat-url]: https://gitter.im/postcss/postcss
diff --git a/node_modules/postcss-cli/bin/postcss b/node_modules/postcss-cli/bin/postcss
new file mode 100755
index 0000000..d40abef
--- /dev/null
+++ b/node_modules/postcss-cli/bin/postcss
@@ -0,0 +1,3 @@
+#!/usr/bin/env node
+
+require('../')
diff --git a/node_modules/postcss-cli/index.js b/node_modules/postcss-cli/index.js
new file mode 100644
index 0000000..764f2a4
--- /dev/null
+++ b/node_modules/postcss-cli/index.js
@@ -0,0 +1,284 @@
+'use strict'
+
+const fs = require('fs-extra')
+const path = require('path')
+
+const prettyHrtime = require('pretty-hrtime')
+const stdin = require('get-stdin')
+const read = require('read-cache')
+const chalk = require('chalk')
+const globber = require('globby')
+const chokidar = require('chokidar')
+
+const postcss = require('postcss')
+const postcssrc = require('postcss-load-config')
+const reporter = require('postcss-reporter/lib/formatter')()
+
+const argv = require('./lib/args')
+const depGraph = require('./lib/depGraph')
+
+const dir = argv.dir
+
+let input = argv._
+const output = argv.output
+
+if (argv.map) argv.map = { inline: false }
+
+const cliConfig = {
+ options: {
+ map: argv.map !== undefined ? argv.map : { inline: true },
+ parser: argv.parser ? require(argv.parser) : undefined,
+ syntax: argv.syntax ? require(argv.syntax) : undefined,
+ stringifier: argv.stringifier ? require(argv.stringifier) : undefined
+ },
+ plugins: argv.use
+ ? argv.use.map(plugin => {
+ try {
+ return require(plugin)()
+ } catch (e) {
+ return error(`Plugin Error: Cannot find module '${plugin}'`)
+ }
+ })
+ : []
+}
+
+let configFile
+
+if (argv.env) process.env.NODE_ENV = argv.env
+if (argv.config) argv.config = path.resolve(argv.config)
+
+Promise.resolve()
+ .then(() => {
+ if (argv.watch && !(argv.output || argv.replace || argv.dir)) {
+ error('Cannot write to stdout in watch mode')
+ }
+ if (input && input.length) return globber(input)
+
+ if (argv.replace || argv.dir) {
+ error(
+ 'Input Error: Cannot use --dir or --replace when reading from stdin'
+ )
+ }
+
+ if (argv.watch) {
+ error('Input Error: Cannot run in watch mode when reading from stdin')
+ }
+
+ return ['stdin']
+ })
+ .then(i => {
+ if (!i || !i.length) {
+ error('Input Error: You must pass a valid list of files to parse')
+ }
+
+ if (i.length > 1 && !argv.dir && !argv.replace) {
+ error(
+ 'Input Error: Must use --dir or --replace with multiple input files'
+ )
+ }
+
+ if (i[0] !== 'stdin') i = i.map(i => path.resolve(i))
+
+ input = i
+
+ return files(input)
+ })
+ .then(results => {
+ if (argv.watch) {
+ const printMessage = () =>
+ printVerbose(chalk.dim('\nWaiting for file changes...'))
+ const watcher = chokidar.watch(input.concat(dependencies(results)), {
+ usePolling: argv.poll,
+ interval: argv.poll && typeof argv.poll === 'number' ? argv.poll : 100,
+ awaitWriteFinish: {
+ stabilityThreshold: 50,
+ pollInterval: 10
+ }
+ })
+
+ if (configFile) watcher.add(configFile)
+
+ watcher.on('ready', printMessage).on('change', file => {
+ let recompile = []
+
+ if (~input.indexOf(file)) recompile.push(file)
+
+ recompile = recompile.concat(
+ depGraph.dependantsOf(file).filter(file => ~input.indexOf(file))
+ )
+
+ if (!recompile.length) recompile = input
+
+ return files(recompile)
+ .then(results => watcher.add(dependencies(results)))
+ .then(printMessage)
+ .catch(error)
+ })
+ }
+ })
+ .catch(err => {
+ error(err)
+
+ process.exit(1)
+ })
+
+function rc(ctx, path) {
+ if (argv.use) return Promise.resolve(cliConfig)
+
+ // Set argv: false to keep cosmiconfig from attempting to read the --config
+ // flag from process.argv
+ return postcssrc(ctx, path, { argv: false })
+ .then(rc => {
+ if (rc.options.from || rc.options.to) {
+ error(
+ 'Config Error: Can not set from or to options in config file, use CLI arguments instead'
+ )
+ }
+ configFile = rc.file
+ return rc
+ })
+ .catch(err => {
+ if (err.message.indexOf('No PostCSS Config found') === -1) throw err
+ })
+}
+
+function files(files) {
+ if (typeof files === 'string') files = [files]
+
+ return Promise.all(
+ files.map(file => {
+ if (file === 'stdin') {
+ return stdin().then(content => {
+ if (!content) return error('Input Error: Did not receive any STDIN')
+ return css(content, 'stdin')
+ })
+ }
+
+ return read(file).then(content => css(content, file))
+ })
+ )
+}
+
+function css(css, file) {
+ const ctx = { options: cliConfig.options }
+
+ if (file !== 'stdin') {
+ ctx.file = {
+ dirname: path.dirname(file),
+ basename: path.basename(file),
+ extname: path.extname(file)
+ }
+
+ if (!argv.config) argv.config = path.dirname(file)
+ }
+
+ const relativePath =
+ file !== 'stdin' ? path.relative(path.resolve(), file) : file
+
+ if (!argv.config) argv.config = process.cwd()
+
+ const time = process.hrtime()
+
+ printVerbose(chalk`{cyan Processing {bold ${relativePath}}...}`)
+
+ return rc(ctx, argv.config)
+ .then(config => {
+ config = config || cliConfig
+ const options = Object.assign({}, config.options)
+
+ if (file === 'stdin' && output) file = output
+
+ // TODO: Unit test this
+ options.from = file === 'stdin' ? path.join(process.cwd(), 'stdin') : file
+
+ if (output || dir || argv.replace) {
+ const base = argv.base
+ ? file.replace(path.resolve(argv.base), '')
+ : path.basename(file)
+ options.to = output || (argv.replace ? file : path.join(dir, base))
+
+ if (argv.ext) {
+ options.to = options.to.replace(path.extname(options.to), argv.ext)
+ }
+
+ options.to = path.resolve(options.to)
+ }
+
+ if (!options.to && config.options.map && !config.options.map.inline) {
+ error(
+ 'Output Error: Cannot output external sourcemaps when writing to STDOUT'
+ )
+ }
+
+ return postcss(config.plugins)
+ .process(css, options)
+ .then(result => {
+ const tasks = []
+
+ if (options.to) {
+ tasks.push(fs.outputFile(options.to, result.css))
+
+ if (result.map) {
+ const mapfile = options.to.replace(
+ path.extname(options.to),
+ `${path.extname(options.to)}.map`
+ )
+ tasks.push(fs.outputFile(mapfile, result.map))
+ }
+ } else process.stdout.write(result.css, 'utf8')
+
+ return Promise.all(tasks).then(() => {
+ const prettyTime = prettyHrtime(process.hrtime(time))
+ printVerbose(
+ chalk`{green Finished {bold ${relativePath}} in {bold ${prettyTime}}}`
+ )
+
+ if (result.warnings().length) {
+ console.warn(reporter(result))
+ }
+
+ return result
+ })
+ })
+ })
+ .catch(err => {
+ throw err
+ })
+}
+
+function dependencies(results) {
+ if (!Array.isArray(results)) results = [results]
+
+ const messages = []
+
+ results.forEach(result => {
+ if (result.messages <= 0) return
+
+ result.messages
+ .filter(msg => (msg.type === 'dependency' ? msg : ''))
+ .map(depGraph.add)
+ .forEach(dependency => messages.push(dependency.file))
+ })
+
+ return messages
+}
+
+function printVerbose(message) {
+ if (argv.verbose) console.warn(message)
+}
+
+function error(err) {
+ // Seperate error from logging output
+ if (argv.verbose) console.error()
+
+ if (typeof err === 'string') {
+ console.error(chalk.red(err))
+ } else if (err.name === 'CssSyntaxError') {
+ console.error(err.toString())
+ } else {
+ console.error(err)
+ }
+ // Watch mode shouldn't exit on error
+ if (argv.watch) return
+ process.exit(1)
+}
diff --git a/node_modules/postcss-cli/lib/args.js b/node_modules/postcss-cli/lib/args.js
new file mode 100644
index 0000000..2e6e543
--- /dev/null
+++ b/node_modules/postcss-cli/lib/args.js
@@ -0,0 +1,146 @@
+'use strict'
+const chalk = require('chalk')
+
+const logo = `
+ /|\\
+ // //
+ // //
+ //___*___*___//
+ //--*---------*--//
+ /|| * * ||/
+ // ||* *|| //
+ // || * * || //
+ //_____||___*_________*___||_____//
+`
+
+const cli = require('../package.json').version
+const version = chalk.bold.red(`
+ /|\\
+ // //
+ // //
+ //___*___*___//
+ //--*---------*--//
+ /|| * * ||/
+ // ||* v${cli} *|| //
+ // || * * || //
+ //_____||___*_________*___||_____//
+`)
+
+module.exports = require('yargs')
+ .usage(
+ `${chalk.bold.red(logo)}
+Usage:
+ $0 [input.css] [OPTIONS] [-o|--output output.css] [--watch|-w]
+ $0 <input.css>... [OPTIONS] --dir <output-directory> [--watch|-w]
+ $0 <input-directory> [OPTIONS] --dir <output-directory> [--watch|-w]
+ $0 <input-glob-pattern> [OPTIONS] --dir <output-directory> [--watch|-w]
+ $0 <input.css>... [OPTIONS] --replace`
+ )
+ .group(
+ ['o', 'd', 'r', 'map', 'no-map', 'verbose', 'watch', 'env'],
+ 'Basic options:'
+ )
+ .option('o', {
+ alias: 'output',
+ desc: 'Output file',
+ type: 'string',
+ conflicts: ['dir', 'replace']
+ })
+ .option('d', {
+ alias: 'dir',
+ desc: 'Output directory',
+ type: 'string',
+ conflicts: ['output', 'replace']
+ })
+ .option('r', {
+ alias: 'replace',
+ desc: 'Replace (overwrite) the input file',
+ type: 'boolean',
+ // HACK: conflicts doesn't work with boolean opts correctly, so we do this
+ // See https://github.com/yargs/yargs/issues/929
+ coerce: v => v || undefined,
+ conflicts: ['output', 'dir']
+ })
+ .alias('map', 'm')
+ .describe('map', 'Create an external sourcemap')
+ .describe('no-map', 'Disable the default inline sourcemaps')
+ .option('verbose', {
+ desc: 'Be verbose',
+ type: 'boolean'
+ })
+ .option('watch', {
+ alias: 'w',
+ desc: 'Watch files for changes and recompile as needed',
+ type: 'boolean',
+ // HACK: conflicts doesn't work with boolean opts correctly, so we do this
+ // See https://github.com/yargs/yargs/issues/929
+ coerce: v => v || undefined,
+ conflicts: 'replace'
+ })
+ .option('env', {
+ desc: 'A shortcut for setting NODE_ENV',
+ type: 'string'
+ })
+ .group(
+ ['u', 'parser', 'stringifier', 'syntax'],
+ 'Options for when not using a config file:'
+ )
+ .option('u', {
+ alias: 'use',
+ desc: 'List of postcss plugins to use',
+ type: 'array'
+ })
+ .option('parser', {
+ desc: 'Custom postcss parser',
+ type: 'string'
+ })
+ .option('stringifier', {
+ desc: 'Custom postcss stringifier',
+ type: 'string'
+ })
+ .option('syntax', {
+ desc: 'Custom postcss syntax',
+ type: 'string'
+ })
+ .group(['ext', 'base', 'poll', 'config'], 'Advanced options:')
+ .option('ext', {
+ desc: 'Override the output file extension; for use with --dir',
+ type: 'string',
+ implies: 'dir',
+ coerce(ext) {
+ if (ext.indexOf('.') !== 0) return `.${ext}`
+ return ext
+ }
+ })
+ .option('base', {
+ desc:
+ 'Mirror the directory structure relative to this path in the output directory, for use with --dir',
+ type: 'string',
+ implies: 'dir'
+ })
+ .option('poll', {
+ desc:
+ 'Use polling for file watching. Can optionally pass polling interval; default 100 ms',
+ implies: 'watch'
+ })
+ .option('config', {
+ desc: 'Set a custom path to look for a config file',
+ type: 'string'
+ })
+ .version(version)
+ .alias('h', 'help')
+ .example('$0 input.css -o output.css', 'Basic usage')
+ .example('$0 src/**/*.css --base src --dir build', 'Glob Pattern & output')
+ .example(
+ 'cat input.css | $0 -u autoprefixer > output.css',
+ 'Piping input & output'
+ )
+ .epilog(
+ `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 (ie: src/**/*.css). If you pass an input directory, it will process all files in the directory and any subdirectories, respecting the glob pattern.
+
+For more details, please see https://github.com/postcss/postcss-cli`
+ ).argv
diff --git a/node_modules/postcss-cli/lib/depGraph.js b/node_modules/postcss-cli/lib/depGraph.js
new file mode 100644
index 0000000..19bd6b7
--- /dev/null
+++ b/node_modules/postcss-cli/lib/depGraph.js
@@ -0,0 +1,22 @@
+'use strict'
+const path = require('path')
+const DepGraph = require('dependency-graph').DepGraph
+
+const graph = new DepGraph()
+
+exports.add = message => {
+ message.parent = path.resolve(message.parent)
+ message.file = path.resolve(message.file)
+
+ graph.addNode(message.parent)
+ graph.addNode(message.file)
+ graph.addDependency(message.parent, message.file)
+ return message
+}
+
+exports.dependantsOf = node => {
+ node = path.resolve(node)
+
+ if (graph.hasNode(node)) return graph.dependantsOf(node)
+ return []
+}
diff --git a/node_modules/postcss-cli/package.json b/node_modules/postcss-cli/package.json
new file mode 100644
index 0000000..6948dc0
--- /dev/null
+++ b/node_modules/postcss-cli/package.json
@@ -0,0 +1,103 @@
+{
+ "_args": [
+ [
+ "postcss-cli@5.0.1",
+ "/home/dstaesse/git/website"
+ ]
+ ],
+ "_development": true,
+ "_from": "postcss-cli@5.0.1",
+ "_id": "postcss-cli@5.0.1",
+ "_inBundle": false,
+ "_integrity": "sha512-yrvWl8axFdiXlJuVQRIHM4qskvl0F4/fWUUIYyYo0RV6lOdB0Vcyt8Rv7lBvtwVuNa0pClz88LgxzT4ZzC7UWA==",
+ "_location": "/postcss-cli",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "postcss-cli@5.0.1",
+ "name": "postcss-cli",
+ "escapedName": "postcss-cli",
+ "rawSpec": "5.0.1",
+ "saveSpec": null,
+ "fetchSpec": "5.0.1"
+ },
+ "_requiredBy": [
+ "#DEV:/"
+ ],
+ "_resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-5.0.1.tgz",
+ "_spec": "5.0.1",
+ "_where": "/home/dstaesse/git/website",
+ "bin": {
+ "postcss": "./bin/postcss"
+ },
+ "bugs": {
+ "url": "https://github.com/postcss/postcss-cli/issues"
+ },
+ "contributors": [
+ {
+ "name": "Michael Ciniawky",
+ "email": "michael.ciniawsky@gmail.com"
+ },
+ {
+ "name": "Ryan Zimmermann",
+ "email": "opensrc@ryanzim.com"
+ }
+ ],
+ "dependencies": {
+ "chalk": "^2.1.0",
+ "chokidar": "^2.0.0",
+ "dependency-graph": "^0.7.0",
+ "fs-extra": "^5.0.0",
+ "get-stdin": "^6.0.0",
+ "globby": "^8.0.0",
+ "postcss": "^6.0.1",
+ "postcss-load-config": "^1.1.0",
+ "postcss-reporter": "^5.0.0",
+ "pretty-hrtime": "^1.0.3",
+ "read-cache": "^1.0.0",
+ "yargs": "^11.0.0"
+ },
+ "description": "CLI for PostCSS",
+ "devDependencies": {
+ "ava": "^0.25.0",
+ "coveralls": "^3.0.0",
+ "eslint": "^4.2.0",
+ "eslint-config-problems": "0.0.2",
+ "nyc": "^11.0.2",
+ "postcss-import": "^11.0.0",
+ "prettier": "1.13.0",
+ "sugarss": "^1.0.0",
+ "uuid": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "bin",
+ "index.js",
+ "lib"
+ ],
+ "homepage": "https://github.com/postcss/postcss-cli#readme",
+ "keywords": [
+ "cli",
+ "postcss",
+ "postcss-runner"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "name": "postcss-cli",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/postcss/postcss-cli.git"
+ },
+ "scripts": {
+ "ci": "eslint . && nyc ava -v && npm run prettier -- --list-different",
+ "clean": "node test/helpers/clean.js",
+ "format": "npm run prettier -- --write && eslint . --fix",
+ "pretest": "npm run clean && npm run format",
+ "prettier": "prettier --single-quote --no-semi **/*.{js,md}",
+ "test": "nyc ava -v"
+ },
+ "version": "5.0.1"
+}