From 3c51c3be85bb0d1bdb87ea0d6632f1c256912f27 Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Sun, 6 Oct 2019 21:37:45 +0200 Subject: build: Add some required modules for node --- .../node_modules/postcss/docs/api/index.html | 22531 +++++++++++++++++++ 1 file changed, 22531 insertions(+) create mode 100644 node_modules/autoprefixer/node_modules/postcss/docs/api/index.html (limited to 'node_modules/autoprefixer/node_modules/postcss/docs/api/index.html') diff --git a/node_modules/autoprefixer/node_modules/postcss/docs/api/index.html b/node_modules/autoprefixer/node_modules/postcss/docs/api/index.html new file mode 100644 index 0000000..8dfeb47 --- /dev/null +++ b/node_modules/autoprefixer/node_modules/postcss/docs/api/index.html @@ -0,0 +1,22531 @@ + + + + + postcss 7.0.17 | Documentation + + + + + + +
+
+
+ +
+
+
+ + +
+
+ +

+ CLASSES +

+ + + + + +
+
+ + + +
+ +
+ + + Extends + + Container + + + + + + + lib/at-rule.js + + +
+ +

+ + + AtRule + (defaults) + + +

+ +

Represents an at-rule.

+

If it’s followed in the CSS by a {} block, this node will have +a nodes property representing its children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
defaults + any + +
+ + + + + + + + + +

Examples

+ + +
const root = postcss.parse('@charset "UTF-8"; @media print {}')
+
+const charset = root.first
+charset.type  //=> 'atrule'
+charset.nodes //=> undefined
+
+const media = root.last
+media.nodes   //=> []
+ + + + + + +

Instance Members

+
+ +
+ + + +

+ + + append + (children) + + +

+ +

Inserts new nodes to the end of the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
children + ...(Node | object | string | Array<Node>) + + New nodes. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
const decl1 = postcss.decl({ prop: 'color', value: 'black' })
+const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })
+rule.append(decl1, decl2)
+
+root.append({ name: 'charset', params: '"UTF-8"' })  // at-rule
+root.append({ selector: 'a' })                       // rule
+rule.append({ prop: 'color', value: 'black' })       // declaration
+rule.append({ text: 'Comment' })                     // comment
+
+root.append('a {}')
+root.first.append('color: black; z-index: 1')
+ + + + + + + + + + +
+ + +
+ + + +

+ + + each + (callback) + + +

+ +

Iterates through the container’s immediate children, +calling callback for each child.

+

Returning false in the callback will break iteration.

+

This method only iterates through the container’s immediate children. +If you need to recursively iterate through all the container’s descendant +nodes, use Container#walk.

+

Unlike the for {}-cycle or Array#forEach this iterator is safe +if you are mutating the array of child nodes during iteration. +PostCSS will adjust the current index to match the mutations.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
const root = postcss.parse('a { color: black; z-index: 1 }')
+const rule = root.first
+
+for (const decl of rule.nodes) {
+  decl.cloneBefore({ prop: '-webkit-' + decl.prop })
+  // Cycle will be infinite, because cloneBefore moves the current node
+  // to the next index
+}
+
+rule.each(decl => {
+  decl.cloneBefore({ prop: '-webkit-' + decl.prop })
+  // Will be executed only for color and z-index
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + every + (condition) + + +

+ +

Returns true if callback returns true +for all of the container’s children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
condition + childCondition + + Iterator returns true or false. +
+ + + + + + +

Returns

+ boolean + : + Is every child pass condition. + + + + + + + + +

Examples

+ + +
const noPrefixes = rule.every(i => i.prop[0] !== '-')
+ + + + + + + + + + +
+ + +
+ + + +

+ + + first + () + + +

+ +

The container’s first child.

+ + +

+ Type: + Node +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
rule.first === rules.nodes[0]
+ + + + + + + + + + +
+ + +
+ + + +

+ + + index + (child) + + +

+ +

Returns a child’s index within the Container#nodes array.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
child + Node + + Child of the current container. +
+ + + + + + +

Returns

+ number + : + Child index. + + + + + + + + +

Examples

+ + +
rule.index( rule.nodes[2] ) //=> 2
+ + + + + + + + + + +
+ + +
+ + + +

+ + + insertAfter + (exist, add) + + +

+ +

Insert new node after old node within the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
exist + (Node | number) + + Child or child’s index. +
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + insertBefore + (exist, add) + + +

+ +

Insert new node before old node within the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
exist + (Node | number) + + Child or child’s index. +
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }))
+ + + + + + + + + + +
+ + +
+ + + +

+ + + last + () + + +

+ +

The container’s last child.

+ + +

+ Type: + Node +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
rule.last === rule.nodes[rule.nodes.length - 1]
+ + + + + + + + + + +
+ + +
+ + + +

+ + + prepend + (children) + + +

+ +

Inserts new nodes to the start of the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
children + ...(Node | object | string | Array<Node>) + + New nodes. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
const decl1 = postcss.decl({ prop: 'color', value: 'black' })
+const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })
+rule.prepend(decl1, decl2)
+
+root.append({ name: 'charset', params: '"UTF-8"' })  // at-rule
+root.append({ selector: 'a' })                       // rule
+rule.append({ prop: 'color', value: 'black' })       // declaration
+rule.append({ text: 'Comment' })                     // comment
+
+root.append('a {}')
+root.first.append('color: black; z-index: 1')
+ + + + + + + + + + +
+ + +
+ + + +

+ + + removeAll + () + + +

+ +

Removes all children from the container +and cleans their parent properties.

+ + + + + + + + + + + + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
rule.removeAll()
+rule.nodes.length //=> 0
+ + + + + + + + + + +
+ + +
+ + + +

+ + + removeChild + (child) + + +

+ +

Removes node from the container and cleans the parent properties +from the node and its children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
child + (Node | number) + + Child or child’s index. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain + + + + + + + + +

Examples

+ + +
rule.nodes.length  //=> 5
+rule.removeChild(decl)
+rule.nodes.length  //=> 4
+decl.parent        //=> undefined
+ + + + + + + + + + +
+ + +
+ + + +

+ + + replaceValues + (pattern, opts, callback) + + +

+ +

Passes all declaration values within the container that match pattern +through callback, replacing those values with the returned result +of callback.

+

This method is useful if you are using a custom unit or function +and need to iterate through all values.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
pattern + (string | RegExp) + + Replace pattern. +
opts + object + + Options to speed up the search. +
opts.props + (string | Array<string>) + + An array of property names. +
opts.fast + string + + String that’s used to narrow down +values and speed up the regexp search. +
callback + (function | string) + + String to replace pattern or callback +that returns a new value. The callback +will receive the same arguments +as those passed to a function parameter +of +String#replace +. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
root.replaceValues(/\d+rem/, { fast: 'rem' }, string => {
+  return 15 * parseInt(string) + 'px'
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + some + (condition) + + +

+ +

Returns true if callback returns true for (at least) one +of the container’s children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
condition + childCondition + + Iterator returns true or false. +
+ + + + + + +

Returns

+ boolean + : + Is some child pass condition. + + + + + + + + +

Examples

+ + +
const hasPrefix = rule.some(i => i.prop[0] === '-')
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walk + (callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each node.

+

Like container.each(), this method is safe to use +if you are mutating arrays during iteration.

+

If you only need to iterate through the container’s immediate children, +use Container#each.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walk(node => {
+  // Traverses all descendant nodes.
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkAtRules + (name?, callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each at-rule node.

+

If you pass a filter, iteration will only happen over at-rules +that have matching names.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
name + (string | RegExp)? + + String or regular expression +to filter at-rules by name. +
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walkAtRules(rule => {
+  if (isOld(rule.name)) rule.remove()
+})
+
+let first = false
+root.walkAtRules('charset', rule => {
+  if (!first) {
+    first = true
+  } else {
+    rule.remove()
+  }
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkComments + (callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each comment node.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walkComments(comment => {
+  comment.remove()
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkDecls + (prop?, callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each declaration node.

+

If you pass a filter, iteration will only happen over declarations +with matching properties.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
prop + (string | RegExp)? + + String or regular expression +to filter declarations by property name. +
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walkDecls(decl => {
+  checkPropertySupport(decl.prop)
+})
+
+root.walkDecls('border-radius', decl => {
+  decl.remove()
+})
+
+root.walkDecls(/^background/, decl => {
+  decl.value = takeFirstColorFromGradient(decl.value)
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkRules + (selector?, callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each rule node.

+

If you pass a filter, iteration will only happen over rules +with matching selectors.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
selector + (string | RegExp)? + + String or regular expression +to filter rules by selector. +
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
const selectors = []
+root.walkRules(rule => {
+  selectors.push(rule.selector)
+})
+console.log(`Your CSS uses ${ selectors.length } selectors`)
+ + + + + + + + + + +
+ + +
+ + + + + + +
+ + + + +
+ +
+ + + Extends + + Node + + + + + + + lib/comment.js + + +
+ +

+ + + Comment + (defaults) + + +

+ +

Represents a comment between declarations or statements (rule and at-rules).

+

Comments inside selectors, at-rule parameters, or declaration values +will be stored in the raws properties explained above.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
defaults + any + +
+ + + + + + + + + + + + + +

Instance Members

+
+ +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + after + (add) + + +

+ +

Insert new node after current node to current node’s parent.

+

Just alias for node.parent.insertAfter(node, add).

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
decl.after('color: black')
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + before + (add) + + +

+ +

Insert new node before current node to current node’s parent.

+

Just alias for node.parent.insertBefore(node, add).

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
decl.before('content: ""')
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + cleanRaws + (keepBetween?) + + +

+ +

Clear the code style properties for the node and its children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
keepBetween + boolean? + + Keep the raws.between symbols. +
+ + + + + + +

Returns

+ undefined + : + + + + + + + + + +

Examples

+ + +
node.raws.before  //=> ' '
+node.cleanRaws()
+node.raws.before  //=> undefined
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + clone + (overrides = {}) + + +

+ +

Returns an exact clone of the node.

+

The resulting cloned node and its (cloned) children will retain +code style properties.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
overrides + object? + + = {} + New properties to override in the clone. +
+ + + + + + +

Returns

+ Node + : + Clone of the node. + + + + + + + + +

Examples

+ + +
decl.raws.before    //=> "\n  "
+const cloned = decl.clone({ prop: '-moz-' + decl.prop })
+cloned.raws.before  //=> "\n  "
+cloned.toString()   //=> -moz-transform: scale(0)
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + cloneAfter + (overrides = {}) + + +

+ +

Shortcut to clone the node and insert the resulting cloned node +after the current node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
overrides + object? + + = {} + New properties to override in the clone. +
+ + + + + + +

Returns

+ Node + : + New node. + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + cloneBefore + (overrides = {}) + + +

+ +

Shortcut to clone the node and insert the resulting cloned node +before the current node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
overrides + object? + + = {} + Mew properties to override in the clone. +
+ + + + + + +

Returns

+ Node + : + New node + + + + + + + + +

Examples

+ + +
decl.cloneBefore({ prop: '-moz-' + decl.prop })
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + error + (message, opts = {}) + + +

+ +

Returns a CssSyntaxError instance containing the original position +of the node in the source, showing line and column numbers and also +a small excerpt to facilitate debugging.

+

If present, an input source map will be used to get the original position +of the source, even from a previous compilation step +(e.g., from Sass compilation).

+

This method produces very useful error messages.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
message + string + + Error description. +
opts + object? + + = {} + Options. +
opts.plugin + string + + Plugin name that created this error. +PostCSS will set it automatically. +
opts.word + string + + A word inside a node’s string that should +be highlighted as the source of the error. +
opts.index + number + + An index inside a node’s string that should +be highlighted as the source of the error. +
+ + + + + + +

Returns

+ CssSyntaxError + : + Error object to throw it. + + + + + + + + +

Examples

+ + +
if (!variables[name]) {
+  throw decl.error('Unknown variable ' + name, { word: name })
+  // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black
+  //   color: $black
+  // a
+  //          ^
+  //   background: white
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + next + () + + +

+ +

Returns the next child of the node’s parent. +Returns undefined if the current node is the last child.

+ + + + + + + + + + + + + + + + +

Returns

+ (Node | undefined) + : + Next node. + + + + + + + + +

Examples

+ + +
if (comment.text === 'delete next') {
+  const next = comment.next()
+  if (next) {
+    next.remove()
+  }
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + prev + () + + +

+ +

Returns the previous child of the node’s parent. +Returns undefined if the current node is the first child.

+ + + + + + + + + + + + + + + + +

Returns

+ (Node | undefined) + : + Previous node. + + + + + + + + +

Examples

+ + +
const annotation = decl.prev()
+if (annotation.type === 'comment') {
+  readAnnotation(annotation.text)
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + raw + (prop, defaultType?) + + +

+ +

Returns a Node#raws value. If the node is missing +the code style property (because the node was manually built or cloned), +PostCSS will try to autodetect the code style property by looking +at other nodes in the tree.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
prop + string + + Name of code style property. +
defaultType + string? + + Name of default value, it can be missed +if the value is the same as prop. +
+ + + + + + +

Returns

+ string + : + Code style value. + + + + + + + + +

Examples

+ + +
const root = postcss.parse('a { background: white }')
+root.nodes[0].append({ prop: 'color', value: 'black' })
+root.nodes[0].nodes[1].raws.before   //=> undefined
+root.nodes[0].nodes[1].raw('before') //=> ' '
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + remove + () + + +

+ +

Removes the node from its parent and cleans the parent properties +from the node and its children.

+ + + + + + + + + + + + + + + + +

Returns

+ Node + : + Node to make calls chain. + + + + + + + + +

Examples

+ + +
if (decl.prop.match(/^-webkit-/)) {
+  decl.remove()
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + replaceWith + (nodes) + + +

+ +

Inserts node(s) before the current node and removes the current node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
nodes + ...Node + + Mode(s) to replace current one. +
+ + + + + + +

Returns

+ Node + : + Current node to methods chain. + + + + + + + + +

Examples

+ + +
if (atrule.name === 'mixin') {
+  atrule.replaceWith(mixinRules[atrule.params])
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + root + () + + +

+ +

Finds the Root instance of the node’s tree.

+ + + + + + + + + + + + + + + + +

Returns

+ Root + : + Root parent. + + + + + + + + +

Examples

+ + +
root.nodes[0].nodes[0].root() === root
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + toString + (stringifier = stringify) + + +

+ +

Returns a CSS string representing the node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
stringifier + (stringifier | syntax)? + + = stringify + A syntax to use +in string generation. +
+ + + + + + +

Returns

+ string + : + CSS string of this node. + + + + + + + + +

Examples

+ + +
postcss.rule({ selector: 'a' }).toString() //=> "a {}"
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + warn + (result, text, opts?) + + +

+ +

This method is provided as a convenience wrapper for Result#warn.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
result + Result + + The +Result + instance +that will receive the warning. +
text + string + + Warning message. +
opts + object? + + Options +
opts.plugin + string + + Plugin name that created this warning. +PostCSS will set it automatically. +
opts.word + string + + A word inside a node’s string that should +be highlighted as the source of the warning. +
opts.index + number + + An index inside a node’s string that should +be highlighted as the source of the warning. +
+ + + + + + +

Returns

+ Warning + : + Created warning object. + + + + + + + + +

Examples

+ + +
const plugin = postcss.plugin('postcss-deprecated', () => {
+  return (root, result) => {
+    root.walkDecls('bad', decl => {
+      decl.warn(result, 'Deprecated property bad')
+    })
+  }
+})
+ + + + + + + + + + +
+ + +
+ + + + + + +
+ + + + +
+ +
+ + + Extends + + Node + + + + + + + lib/container.js + + +
+ +

+ + + Container + () + + +

+ +

The Root, AtRule, and Rule container nodes +inherit some common methods to help work with their children.

+

Note that all containers can store any content. If you write a rule inside +a rule, PostCSS will parse it.

+ + + + + + + + + + + + + + + + + + + + + + + +

Instance Members

+
+ +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + after + (add) + + +

+ +

Insert new node after current node to current node’s parent.

+

Just alias for node.parent.insertAfter(node, add).

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
decl.after('color: black')
+ + + + + + + + + + +
+ + +
+ + + +

+ + + append + (children) + + +

+ +

Inserts new nodes to the end of the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
children + ...(Node | object | string | Array<Node>) + + New nodes. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
const decl1 = postcss.decl({ prop: 'color', value: 'black' })
+const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })
+rule.append(decl1, decl2)
+
+root.append({ name: 'charset', params: '"UTF-8"' })  // at-rule
+root.append({ selector: 'a' })                       // rule
+rule.append({ prop: 'color', value: 'black' })       // declaration
+rule.append({ text: 'Comment' })                     // comment
+
+root.append('a {}')
+root.first.append('color: black; z-index: 1')
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + before + (add) + + +

+ +

Insert new node before current node to current node’s parent.

+

Just alias for node.parent.insertBefore(node, add).

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
decl.before('content: ""')
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + cleanRaws + (keepBetween?) + + +

+ +

Clear the code style properties for the node and its children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
keepBetween + boolean? + + Keep the raws.between symbols. +
+ + + + + + +

Returns

+ undefined + : + + + + + + + + + +

Examples

+ + +
node.raws.before  //=> ' '
+node.cleanRaws()
+node.raws.before  //=> undefined
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + clone + (overrides = {}) + + +

+ +

Returns an exact clone of the node.

+

The resulting cloned node and its (cloned) children will retain +code style properties.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
overrides + object? + + = {} + New properties to override in the clone. +
+ + + + + + +

Returns

+ Node + : + Clone of the node. + + + + + + + + +

Examples

+ + +
decl.raws.before    //=> "\n  "
+const cloned = decl.clone({ prop: '-moz-' + decl.prop })
+cloned.raws.before  //=> "\n  "
+cloned.toString()   //=> -moz-transform: scale(0)
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + cloneAfter + (overrides = {}) + + +

+ +

Shortcut to clone the node and insert the resulting cloned node +after the current node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
overrides + object? + + = {} + New properties to override in the clone. +
+ + + + + + +

Returns

+ Node + : + New node. + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + cloneBefore + (overrides = {}) + + +

+ +

Shortcut to clone the node and insert the resulting cloned node +before the current node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
overrides + object? + + = {} + Mew properties to override in the clone. +
+ + + + + + +

Returns

+ Node + : + New node + + + + + + + + +

Examples

+ + +
decl.cloneBefore({ prop: '-moz-' + decl.prop })
+ + + + + + + + + + +
+ + +
+ + + +

+ + + each + (callback) + + +

+ +

Iterates through the container’s immediate children, +calling callback for each child.

+

Returning false in the callback will break iteration.

+

This method only iterates through the container’s immediate children. +If you need to recursively iterate through all the container’s descendant +nodes, use Container#walk.

+

Unlike the for {}-cycle or Array#forEach this iterator is safe +if you are mutating the array of child nodes during iteration. +PostCSS will adjust the current index to match the mutations.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
const root = postcss.parse('a { color: black; z-index: 1 }')
+const rule = root.first
+
+for (const decl of rule.nodes) {
+  decl.cloneBefore({ prop: '-webkit-' + decl.prop })
+  // Cycle will be infinite, because cloneBefore moves the current node
+  // to the next index
+}
+
+rule.each(decl => {
+  decl.cloneBefore({ prop: '-webkit-' + decl.prop })
+  // Will be executed only for color and z-index
+})
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + error + (message, opts = {}) + + +

+ +

Returns a CssSyntaxError instance containing the original position +of the node in the source, showing line and column numbers and also +a small excerpt to facilitate debugging.

+

If present, an input source map will be used to get the original position +of the source, even from a previous compilation step +(e.g., from Sass compilation).

+

This method produces very useful error messages.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
message + string + + Error description. +
opts + object? + + = {} + Options. +
opts.plugin + string + + Plugin name that created this error. +PostCSS will set it automatically. +
opts.word + string + + A word inside a node’s string that should +be highlighted as the source of the error. +
opts.index + number + + An index inside a node’s string that should +be highlighted as the source of the error. +
+ + + + + + +

Returns

+ CssSyntaxError + : + Error object to throw it. + + + + + + + + +

Examples

+ + +
if (!variables[name]) {
+  throw decl.error('Unknown variable ' + name, { word: name })
+  // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black
+  //   color: $black
+  // a
+  //          ^
+  //   background: white
+}
+ + + + + + + + + + +
+ + +
+ + + +

+ + + every + (condition) + + +

+ +

Returns true if callback returns true +for all of the container’s children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
condition + childCondition + + Iterator returns true or false. +
+ + + + + + +

Returns

+ boolean + : + Is every child pass condition. + + + + + + + + +

Examples

+ + +
const noPrefixes = rule.every(i => i.prop[0] !== '-')
+ + + + + + + + + + +
+ + +
+ + + +

+ + + first + () + + +

+ +

The container’s first child.

+ + +

+ Type: + Node +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
rule.first === rules.nodes[0]
+ + + + + + + + + + +
+ + +
+ + + +

+ + + index + (child) + + +

+ +

Returns a child’s index within the Container#nodes array.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
child + Node + + Child of the current container. +
+ + + + + + +

Returns

+ number + : + Child index. + + + + + + + + +

Examples

+ + +
rule.index( rule.nodes[2] ) //=> 2
+ + + + + + + + + + +
+ + +
+ + + +

+ + + insertAfter + (exist, add) + + +

+ +

Insert new node after old node within the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
exist + (Node | number) + + Child or child’s index. +
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + insertBefore + (exist, add) + + +

+ +

Insert new node before old node within the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
exist + (Node | number) + + Child or child’s index. +
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }))
+ + + + + + + + + + +
+ + +
+ + + +

+ + + last + () + + +

+ +

The container’s last child.

+ + +

+ Type: + Node +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
rule.last === rule.nodes[rule.nodes.length - 1]
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + next + () + + +

+ +

Returns the next child of the node’s parent. +Returns undefined if the current node is the last child.

+ + + + + + + + + + + + + + + + +

Returns

+ (Node | undefined) + : + Next node. + + + + + + + + +

Examples

+ + +
if (comment.text === 'delete next') {
+  const next = comment.next()
+  if (next) {
+    next.remove()
+  }
+}
+ + + + + + + + + + +
+ + +
+ + + +

+ + + prepend + (children) + + +

+ +

Inserts new nodes to the start of the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
children + ...(Node | object | string | Array<Node>) + + New nodes. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
const decl1 = postcss.decl({ prop: 'color', value: 'black' })
+const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })
+rule.prepend(decl1, decl2)
+
+root.append({ name: 'charset', params: '"UTF-8"' })  // at-rule
+root.append({ selector: 'a' })                       // rule
+rule.append({ prop: 'color', value: 'black' })       // declaration
+rule.append({ text: 'Comment' })                     // comment
+
+root.append('a {}')
+root.first.append('color: black; z-index: 1')
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + prev + () + + +

+ +

Returns the previous child of the node’s parent. +Returns undefined if the current node is the first child.

+ + + + + + + + + + + + + + + + +

Returns

+ (Node | undefined) + : + Previous node. + + + + + + + + +

Examples

+ + +
const annotation = decl.prev()
+if (annotation.type === 'comment') {
+  readAnnotation(annotation.text)
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + raw + (prop, defaultType?) + + +

+ +

Returns a Node#raws value. If the node is missing +the code style property (because the node was manually built or cloned), +PostCSS will try to autodetect the code style property by looking +at other nodes in the tree.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
prop + string + + Name of code style property. +
defaultType + string? + + Name of default value, it can be missed +if the value is the same as prop. +
+ + + + + + +

Returns

+ string + : + Code style value. + + + + + + + + +

Examples

+ + +
const root = postcss.parse('a { background: white }')
+root.nodes[0].append({ prop: 'color', value: 'black' })
+root.nodes[0].nodes[1].raws.before   //=> undefined
+root.nodes[0].nodes[1].raw('before') //=> ' '
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + remove + () + + +

+ +

Removes the node from its parent and cleans the parent properties +from the node and its children.

+ + + + + + + + + + + + + + + + +

Returns

+ Node + : + Node to make calls chain. + + + + + + + + +

Examples

+ + +
if (decl.prop.match(/^-webkit-/)) {
+  decl.remove()
+}
+ + + + + + + + + + +
+ + +
+ + + +

+ + + removeAll + () + + +

+ +

Removes all children from the container +and cleans their parent properties.

+ + + + + + + + + + + + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
rule.removeAll()
+rule.nodes.length //=> 0
+ + + + + + + + + + +
+ + +
+ + + +

+ + + removeChild + (child) + + +

+ +

Removes node from the container and cleans the parent properties +from the node and its children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
child + (Node | number) + + Child or child’s index. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain + + + + + + + + +

Examples

+ + +
rule.nodes.length  //=> 5
+rule.removeChild(decl)
+rule.nodes.length  //=> 4
+decl.parent        //=> undefined
+ + + + + + + + + + +
+ + +
+ + + +

+ + + replaceValues + (pattern, opts, callback) + + +

+ +

Passes all declaration values within the container that match pattern +through callback, replacing those values with the returned result +of callback.

+

This method is useful if you are using a custom unit or function +and need to iterate through all values.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
pattern + (string | RegExp) + + Replace pattern. +
opts + object + + Options to speed up the search. +
opts.props + (string | Array<string>) + + An array of property names. +
opts.fast + string + + String that’s used to narrow down +values and speed up the regexp search. +
callback + (function | string) + + String to replace pattern or callback +that returns a new value. The callback +will receive the same arguments +as those passed to a function parameter +of +String#replace +. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
root.replaceValues(/\d+rem/, { fast: 'rem' }, string => {
+  return 15 * parseInt(string) + 'px'
+})
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + replaceWith + (nodes) + + +

+ +

Inserts node(s) before the current node and removes the current node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
nodes + ...Node + + Mode(s) to replace current one. +
+ + + + + + +

Returns

+ Node + : + Current node to methods chain. + + + + + + + + +

Examples

+ + +
if (atrule.name === 'mixin') {
+  atrule.replaceWith(mixinRules[atrule.params])
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + root + () + + +

+ +

Finds the Root instance of the node’s tree.

+ + + + + + + + + + + + + + + + +

Returns

+ Root + : + Root parent. + + + + + + + + +

Examples

+ + +
root.nodes[0].nodes[0].root() === root
+ + + + + + + + + + +
+ + +
+ + + +

+ + + some + (condition) + + +

+ +

Returns true if callback returns true for (at least) one +of the container’s children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
condition + childCondition + + Iterator returns true or false. +
+ + + + + + +

Returns

+ boolean + : + Is some child pass condition. + + + + + + + + +

Examples

+ + +
const hasPrefix = rule.some(i => i.prop[0] === '-')
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + toString + (stringifier = stringify) + + +

+ +

Returns a CSS string representing the node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
stringifier + (stringifier | syntax)? + + = stringify + A syntax to use +in string generation. +
+ + + + + + +

Returns

+ string + : + CSS string of this node. + + + + + + + + +

Examples

+ + +
postcss.rule({ selector: 'a' }).toString() //=> "a {}"
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walk + (callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each node.

+

Like container.each(), this method is safe to use +if you are mutating arrays during iteration.

+

If you only need to iterate through the container’s immediate children, +use Container#each.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walk(node => {
+  // Traverses all descendant nodes.
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkAtRules + (name?, callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each at-rule node.

+

If you pass a filter, iteration will only happen over at-rules +that have matching names.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
name + (string | RegExp)? + + String or regular expression +to filter at-rules by name. +
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walkAtRules(rule => {
+  if (isOld(rule.name)) rule.remove()
+})
+
+let first = false
+root.walkAtRules('charset', rule => {
+  if (!first) {
+    first = true
+  } else {
+    rule.remove()
+  }
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkComments + (callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each comment node.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walkComments(comment => {
+  comment.remove()
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkDecls + (prop?, callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each declaration node.

+

If you pass a filter, iteration will only happen over declarations +with matching properties.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
prop + (string | RegExp)? + + String or regular expression +to filter declarations by property name. +
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walkDecls(decl => {
+  checkPropertySupport(decl.prop)
+})
+
+root.walkDecls('border-radius', decl => {
+  decl.remove()
+})
+
+root.walkDecls(/^background/, decl => {
+  decl.value = takeFirstColorFromGradient(decl.value)
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkRules + (selector?, callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each rule node.

+

If you pass a filter, iteration will only happen over rules +with matching selectors.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
selector + (string | RegExp)? + + String or regular expression +to filter rules by selector. +
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
const selectors = []
+root.walkRules(rule => {
+  selectors.push(rule.selector)
+})
+console.log(`Your CSS uses ${ selectors.length } selectors`)
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + warn + (result, text, opts?) + + +

+ +

This method is provided as a convenience wrapper for Result#warn.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
result + Result + + The +Result + instance +that will receive the warning. +
text + string + + Warning message. +
opts + object? + + Options +
opts.plugin + string + + Plugin name that created this warning. +PostCSS will set it automatically. +
opts.word + string + + A word inside a node’s string that should +be highlighted as the source of the warning. +
opts.index + number + + An index inside a node’s string that should +be highlighted as the source of the warning. +
+ + + + + + +

Returns

+ Warning + : + Created warning object. + + + + + + + + +

Examples

+ + +
const plugin = postcss.plugin('postcss-deprecated', () => {
+  return (root, result) => {
+    root.walkDecls('bad', decl => {
+      decl.warn(result, 'Deprecated property bad')
+    })
+  }
+})
+ + + + + + + + + + +
+ + +
+ + + + + + +
+ + + + +
+ +
+ + + Extends + + Error + + + + + + + lib/css-syntax-error.js + + +
+ +

+ + + CssSyntaxError + (message, line?, column?, source?, file?, plugin?) + + +

+ +

The CSS parser throws this error for broken CSS.

+

Custom parsers can throw this error for broken custom syntax using +the Node#error method.

+

PostCSS will use the input source map to detect the original error location. +If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS, +PostCSS will show the original position in the Sass file.

+

If you need the position in the PostCSS input +(e.g., to debug the previous compiler), use error.input.file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
message + string + + Error message. +
line + number? + + Source line of the error. +
column + number? + + Source column of the error. +
source + string? + + Source code of the broken file. +
file + string? + + Absolute path to the broken file. +
plugin + string? + + PostCSS plugin name, if error came from plugin. +
+ + + + + + + + + +

Examples

+ + +
// Catching and checking syntax error
+try {
+  postcss.parse('a{')
+} catch (error) {
+  if (error.name === 'CssSyntaxError') {
+    error //=> CssSyntaxError
+  }
+}
+ + +
// Raising error from plugin
+throw node.error('Unknown variable', { plugin: 'postcss-vars' })
+ + + + + + +

Instance Members

+
+ +
+ + + +

+ + + name + () + + +

+ +

Always equal to 'CssSyntaxError'. You should always check error type +by error.name === 'CssSyntaxError' +instead of error instanceof CssSyntaxError, +because npm could have several PostCSS versions.

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
if (error.name === 'CssSyntaxError') {
+  error //=> CssSyntaxError
+}
+ + + + + + + + + + +
+ + +
+ + + +

+ + + reason + () + + +

+ +

Error message.

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
error.message //=> 'Unclosed block'
+ + + + + + + + + + +
+ + +
+ + + +

+ + + file + () + + +

+ +

Absolute path to the broken file.

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
error.file       //=> 'a.sass'
+error.input.file //=> 'a.css'
+ + + + + + + + + + +
+ + +
+ + + +

+ + + source + () + + +

+ +

Source code of the broken file.

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
error.source       //=> 'a { b {} }'
+error.input.column //=> 'a b { }'
+ + + + + + + + + + +
+ + +
+ + + +

+ + + plugin + () + + +

+ +

Plugin name, if error came from plugin.

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
error.plugin //=> 'postcss-vars'
+ + + + + + + + + + +
+ + +
+ + + +

+ + + line + () + + +

+ +

Source line of the error.

+ + +

+ Type: + number +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
error.line       //=> 2
+error.input.line //=> 4
+ + + + + + + + + + +
+ + +
+ + + +

+ + + column + () + + +

+ +

Source column of the error.

+ + +

+ Type: + number +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
error.column       //=> 1
+error.input.column //=> 4
+ + + + + + + + + + +
+ + +
+ + + +

+ + + message + () + + +

+ +

Full error text in the GNU error format +with plugin, file, line and column.

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
error.message //=> 'a.css:1:1: Unclosed block'
+ + + + + + + + + + +
+ + +
+ + + +

+ + + showSourceCode + (color?) + + +

+ +

Returns a few lines of CSS source that caused the error.

+

If the CSS has an input source map without sourceContent, +this method will return an empty string.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
color + boolean? + + Whether arrow will be colored red by terminal +color codes. By default, PostCSS will detect +color support by +process.stdout.isTTY + +and +process.env.NODE_DISABLE_COLORS +. +
+ + + + + + +

Returns

+ string + : + Few lines of CSS source that caused the error. + + + + + + + + +

Examples

+ + +
error.showSourceCode() //=> "  4 | }
+                       //      5 | a {
+                       //    > 6 |   bad
+                       //        |   ^
+                       //      7 | }
+                       //      8 | b {"
+ + + + + + + + + + +
+ + +
+ + + +

+ + + toString + () + + +

+ +

Returns error position, message and source code of the broken part.

+ + + + + + + + + + + + + + + + +

Returns

+ string + : + Error position, message and source code. + + + + + + + + +

Examples

+ + +
error.toString() //=> "CssSyntaxError: app.css:1:1: Unclosed block
+                 //    > 1 | a {
+                 //        | ^"
+ + + + + + + + + + +
+ + +
+ + + + + + +
+ + + + +
+ +
+ + + Extends + + Node + + + + + + + lib/declaration.js + + +
+ +

+ + + Declaration + (defaults) + + +

+ +

Represents a CSS declaration.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
defaults + any + +
+ + + + + + + + + +

Examples

+ + +
const root = postcss.parse('a { color: black }')
+const decl = root.first.first
+decl.type       //=> 'decl'
+decl.toString() //=> ' color: black'
+ + + + + + +

Instance Members

+
+ +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + after + (add) + + +

+ +

Insert new node after current node to current node’s parent.

+

Just alias for node.parent.insertAfter(node, add).

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
decl.after('color: black')
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + before + (add) + + +

+ +

Insert new node before current node to current node’s parent.

+

Just alias for node.parent.insertBefore(node, add).

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
decl.before('content: ""')
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + cleanRaws + (keepBetween?) + + +

+ +

Clear the code style properties for the node and its children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
keepBetween + boolean? + + Keep the raws.between symbols. +
+ + + + + + +

Returns

+ undefined + : + + + + + + + + + +

Examples

+ + +
node.raws.before  //=> ' '
+node.cleanRaws()
+node.raws.before  //=> undefined
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + clone + (overrides = {}) + + +

+ +

Returns an exact clone of the node.

+

The resulting cloned node and its (cloned) children will retain +code style properties.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
overrides + object? + + = {} + New properties to override in the clone. +
+ + + + + + +

Returns

+ Node + : + Clone of the node. + + + + + + + + +

Examples

+ + +
decl.raws.before    //=> "\n  "
+const cloned = decl.clone({ prop: '-moz-' + decl.prop })
+cloned.raws.before  //=> "\n  "
+cloned.toString()   //=> -moz-transform: scale(0)
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + cloneAfter + (overrides = {}) + + +

+ +

Shortcut to clone the node and insert the resulting cloned node +after the current node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
overrides + object? + + = {} + New properties to override in the clone. +
+ + + + + + +

Returns

+ Node + : + New node. + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + cloneBefore + (overrides = {}) + + +

+ +

Shortcut to clone the node and insert the resulting cloned node +before the current node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
overrides + object? + + = {} + Mew properties to override in the clone. +
+ + + + + + +

Returns

+ Node + : + New node + + + + + + + + +

Examples

+ + +
decl.cloneBefore({ prop: '-moz-' + decl.prop })
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + error + (message, opts = {}) + + +

+ +

Returns a CssSyntaxError instance containing the original position +of the node in the source, showing line and column numbers and also +a small excerpt to facilitate debugging.

+

If present, an input source map will be used to get the original position +of the source, even from a previous compilation step +(e.g., from Sass compilation).

+

This method produces very useful error messages.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
message + string + + Error description. +
opts + object? + + = {} + Options. +
opts.plugin + string + + Plugin name that created this error. +PostCSS will set it automatically. +
opts.word + string + + A word inside a node’s string that should +be highlighted as the source of the error. +
opts.index + number + + An index inside a node’s string that should +be highlighted as the source of the error. +
+ + + + + + +

Returns

+ CssSyntaxError + : + Error object to throw it. + + + + + + + + +

Examples

+ + +
if (!variables[name]) {
+  throw decl.error('Unknown variable ' + name, { word: name })
+  // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black
+  //   color: $black
+  // a
+  //          ^
+  //   background: white
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + next + () + + +

+ +

Returns the next child of the node’s parent. +Returns undefined if the current node is the last child.

+ + + + + + + + + + + + + + + + +

Returns

+ (Node | undefined) + : + Next node. + + + + + + + + +

Examples

+ + +
if (comment.text === 'delete next') {
+  const next = comment.next()
+  if (next) {
+    next.remove()
+  }
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + prev + () + + +

+ +

Returns the previous child of the node’s parent. +Returns undefined if the current node is the first child.

+ + + + + + + + + + + + + + + + +

Returns

+ (Node | undefined) + : + Previous node. + + + + + + + + +

Examples

+ + +
const annotation = decl.prev()
+if (annotation.type === 'comment') {
+  readAnnotation(annotation.text)
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + raw + (prop, defaultType?) + + +

+ +

Returns a Node#raws value. If the node is missing +the code style property (because the node was manually built or cloned), +PostCSS will try to autodetect the code style property by looking +at other nodes in the tree.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
prop + string + + Name of code style property. +
defaultType + string? + + Name of default value, it can be missed +if the value is the same as prop. +
+ + + + + + +

Returns

+ string + : + Code style value. + + + + + + + + +

Examples

+ + +
const root = postcss.parse('a { background: white }')
+root.nodes[0].append({ prop: 'color', value: 'black' })
+root.nodes[0].nodes[1].raws.before   //=> undefined
+root.nodes[0].nodes[1].raw('before') //=> ' '
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + remove + () + + +

+ +

Removes the node from its parent and cleans the parent properties +from the node and its children.

+ + + + + + + + + + + + + + + + +

Returns

+ Node + : + Node to make calls chain. + + + + + + + + +

Examples

+ + +
if (decl.prop.match(/^-webkit-/)) {
+  decl.remove()
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + replaceWith + (nodes) + + +

+ +

Inserts node(s) before the current node and removes the current node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
nodes + ...Node + + Mode(s) to replace current one. +
+ + + + + + +

Returns

+ Node + : + Current node to methods chain. + + + + + + + + +

Examples

+ + +
if (atrule.name === 'mixin') {
+  atrule.replaceWith(mixinRules[atrule.params])
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + root + () + + +

+ +

Finds the Root instance of the node’s tree.

+ + + + + + + + + + + + + + + + +

Returns

+ Root + : + Root parent. + + + + + + + + +

Examples

+ + +
root.nodes[0].nodes[0].root() === root
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + toString + (stringifier = stringify) + + +

+ +

Returns a CSS string representing the node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
stringifier + (stringifier | syntax)? + + = stringify + A syntax to use +in string generation. +
+ + + + + + +

Returns

+ string + : + CSS string of this node. + + + + + + + + +

Examples

+ + +
postcss.rule({ selector: 'a' }).toString() //=> "a {}"
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + warn + (result, text, opts?) + + +

+ +

This method is provided as a convenience wrapper for Result#warn.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
result + Result + + The +Result + instance +that will receive the warning. +
text + string + + Warning message. +
opts + object? + + Options +
opts.plugin + string + + Plugin name that created this warning. +PostCSS will set it automatically. +
opts.word + string + + A word inside a node’s string that should +be highlighted as the source of the warning. +
opts.index + number + + An index inside a node’s string that should +be highlighted as the source of the warning. +
+ + + + + + +

Returns

+ Warning + : + Created warning object. + + + + + + + + +

Examples

+ + +
const plugin = postcss.plugin('postcss-deprecated', () => {
+  return (root, result) => {
+    root.walkDecls('bad', decl => {
+      decl.warn(result, 'Deprecated property bad')
+    })
+  }
+})
+ + + + + + + + + + +
+ + +
+ + + + + + +
+ + + + +
+ +
+ + + + + lib/input.js + + +
+ +

+ + + Input + (css, opts = {}) + + +

+ +

Represents the source CSS.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
css + string + + Input CSS source. +
opts + object? + + = {} + Processor#process + options. +
+ + + + + + + + + +

Examples

+ + +
const root  = postcss.parse(css, { from: file })
+const input = root.source.input
+ + + + + + +

Instance Members

+
+ +
+ +
+ + + + + lib/input.js + + +
+ +

+ + + css + () + + +

+ +

Input CSS source

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
const input = postcss.parse('a{}', { from: file }).input
+input.css //=> "a{}"
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/input.js + + +
+ +

+ + + file + () + + +

+ +

The absolute path to the CSS source file defined +with the from option.

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
const root = postcss.parse(css, { from: 'a.css' })
+root.source.input.file //=> '/home/ai/a.css'
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/input.js + + +
+ +

+ + + map + () + + +

+ +

The input source map passed from a compilation step before PostCSS +(for example, from Sass compiler).

+ + +

+ Type: + PreviousMap +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
root.source.input.map.consumer().sources //=> ['a.sass']
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/input.js + + +
+ +

+ + + id + () + + +

+ +

The unique ID of the CSS source. It will be created if from option +is not provided (because PostCSS does not know the file path).

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
const root = postcss.parse(css)
+root.source.input.file //=> undefined
+root.source.input.id   //=> "<input css 1>"
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/input.js + + +
+ +

+ + + origin + (line, column) + + +

+ +

Reads the input source map and returns a symbol position +in the input source (e.g., in a Sass file that was compiled +to CSS before being passed to PostCSS).

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
line + number + + Line in input CSS. +
column + number + + Column in input CSS. +
+ + + + + + +

Returns

+ filePosition + : + Position in input source. + + + + + + + + +

Examples

+ + +
root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 }
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/input.js + + +
+ +

+ + + from + () + + +

+ +

The CSS source identifier. Contains Input#file if the user +set the from option, or Input#id if they did not.

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
const root = postcss.parse(css, { from: 'a.css' })
+root.source.input.from //=> "/home/ai/a.css"
+
+const root = postcss.parse(css)
+root.source.input.from //=> "<input css 1>"
+ + + + + + + + + + +
+ + +
+ + + + + + +
+ + + + +
+ + + +

+ + + LazyResult + (processor, css, opts) + + +

+ +

A Promise proxy for the result of PostCSS transformations.

+

A LazyResult instance is returned by Processor#process.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
processor + any + +
css + any + +
opts + any + +
+ + + + + + + + + +

Examples

+ + +
const lazy = postcss([autoprefixer]).process(css)
+ + + + + + +

Instance Members

+
+ +
+ + + +

+ + + processor + () + + +

+ +

Returns a Processor instance, which will be used +for CSS transformations.

+ + +

+ Type: + Processor +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + opts + () + + +

+ +

Options from the Processor#process call.

+ + +

+ Type: + processOptions +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + css + () + + +

+ +

Processes input CSS through synchronous plugins, converts Root +to a CSS string and returns Result#css.

+

This property will only work with synchronous plugins. +If the processor contains any asynchronous plugins +it will throw an error. This is why this method is only +for debug purpose, you should always use LazyResult#then.

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + content + () + + +

+ +

An alias for the css property. Use it with syntaxes +that generate non-CSS output.

+

This property will only work with synchronous plugins. +If the processor contains any asynchronous plugins +it will throw an error. This is why this method is only +for debug purpose, you should always use LazyResult#then.

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + map + () + + +

+ +

Processes input CSS through synchronous plugins +and returns Result#map.

+

This property will only work with synchronous plugins. +If the processor contains any asynchronous plugins +it will throw an error. This is why this method is only +for debug purpose, you should always use LazyResult#then.

+ + +

+ Type: + SourceMapGenerator +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + root + () + + +

+ +

Processes input CSS through synchronous plugins +and returns Result#root.

+

This property will only work with synchronous plugins. If the processor +contains any asynchronous plugins it will throw an error.

+

This is why this method is only for debug purpose, +you should always use LazyResult#then.

+ + +

+ Type: + Root +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + messages + () + + +

+ +

Processes input CSS through synchronous plugins +and returns Result#messages.

+

This property will only work with synchronous plugins. If the processor +contains any asynchronous plugins it will throw an error.

+

This is why this method is only for debug purpose, +you should always use LazyResult#then.

+ + +

+ Type: + Array<Message> +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + warnings + () + + +

+ +

Processes input CSS through synchronous plugins +and calls Result#warnings().

+ + + + + + + + + + + + + + + + +

Returns

+ Array<Warning> + : + Warnings from plugins. + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + toString + () + + +

+ +

Alias for the LazyResult#css property.

+ + + + + + + + + + + + + + + + +

Returns

+ string + : + Output CSS. + + + + + + + + +

Examples

+ + +
lazy + '' === lazy.css
+ + + + + + + + + + +
+ + +
+ + + +

+ + + then + (onFulfilled, onRejected) + + +

+ +

Processes input CSS through synchronous and asynchronous plugins +and calls onFulfilled with a Result instance. If a plugin throws +an error, the onRejected callback will be executed.

+

It implements standard Promise API.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
onFulfilled + onFulfilled + + Callback will be executed +when all plugins will finish work. +
onRejected + onRejected + + Callback will be executed on any error. +
+ + + + + + +

Returns

+ Promise + : + Promise API to make queue. + + + + + + + + +

Examples

+ + +
postcss([autoprefixer]).process(css, { from: cssPath }).then(result => {
+  console.log(result.css)
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + catch + (onRejected) + + +

+ +

Processes input CSS through synchronous and asynchronous plugins +and calls onRejected for each error thrown in any plugin.

+

It implements standard Promise API.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
onRejected + onRejected + + Callback will be executed on any error. +
+ + + + + + +

Returns

+ Promise + : + Promise API to make queue. + + + + + + + + +

Examples

+ + +
postcss([autoprefixer]).process(css).then(result => {
+  console.log(result.css)
+}).catch(error => {
+  console.error(error)
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + finally + (onFinally) + + +

+ +

Processes input CSS through synchronous and asynchronous plugins +and calls onFinally on any error or when all plugins will finish work.

+

It implements standard Promise API.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
onFinally + onFinally + + Callback will be executed on any error or +when all plugins will finish work. +
+ + + + + + +

Returns

+ Promise + : + Promise API to make queue. + + + + + + + + +

Examples

+ + +
postcss([autoprefixer]).process(css).finally(() => {
+  console.log('processing ended')
+})
+ + + + + + + + + + +
+ + +
+ + + + + + +
+ + + + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + Node + (defaults = {}) + + +

+ +

All node classes inherit the following common methods.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
defaults + object? + + = {} + Value for node properties. +
+ + + + + + + + + + + + + +

Instance Members

+
+ +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + error + (message, opts = {}) + + +

+ +

Returns a CssSyntaxError instance containing the original position +of the node in the source, showing line and column numbers and also +a small excerpt to facilitate debugging.

+

If present, an input source map will be used to get the original position +of the source, even from a previous compilation step +(e.g., from Sass compilation).

+

This method produces very useful error messages.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
message + string + + Error description. +
opts + object? + + = {} + Options. +
opts.plugin + string + + Plugin name that created this error. +PostCSS will set it automatically. +
opts.word + string + + A word inside a node’s string that should +be highlighted as the source of the error. +
opts.index + number + + An index inside a node’s string that should +be highlighted as the source of the error. +
+ + + + + + +

Returns

+ CssSyntaxError + : + Error object to throw it. + + + + + + + + +

Examples

+ + +
if (!variables[name]) {
+  throw decl.error('Unknown variable ' + name, { word: name })
+  // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black
+  //   color: $black
+  // a
+  //          ^
+  //   background: white
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + warn + (result, text, opts?) + + +

+ +

This method is provided as a convenience wrapper for Result#warn.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
result + Result + + The +Result + instance +that will receive the warning. +
text + string + + Warning message. +
opts + object? + + Options +
opts.plugin + string + + Plugin name that created this warning. +PostCSS will set it automatically. +
opts.word + string + + A word inside a node’s string that should +be highlighted as the source of the warning. +
opts.index + number + + An index inside a node’s string that should +be highlighted as the source of the warning. +
+ + + + + + +

Returns

+ Warning + : + Created warning object. + + + + + + + + +

Examples

+ + +
const plugin = postcss.plugin('postcss-deprecated', () => {
+  return (root, result) => {
+    root.walkDecls('bad', decl => {
+      decl.warn(result, 'Deprecated property bad')
+    })
+  }
+})
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + remove + () + + +

+ +

Removes the node from its parent and cleans the parent properties +from the node and its children.

+ + + + + + + + + + + + + + + + +

Returns

+ Node + : + Node to make calls chain. + + + + + + + + +

Examples

+ + +
if (decl.prop.match(/^-webkit-/)) {
+  decl.remove()
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + toString + (stringifier = stringify) + + +

+ +

Returns a CSS string representing the node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
stringifier + (stringifier | syntax)? + + = stringify + A syntax to use +in string generation. +
+ + + + + + +

Returns

+ string + : + CSS string of this node. + + + + + + + + +

Examples

+ + +
postcss.rule({ selector: 'a' }).toString() //=> "a {}"
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + clone + (overrides = {}) + + +

+ +

Returns an exact clone of the node.

+

The resulting cloned node and its (cloned) children will retain +code style properties.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
overrides + object? + + = {} + New properties to override in the clone. +
+ + + + + + +

Returns

+ Node + : + Clone of the node. + + + + + + + + +

Examples

+ + +
decl.raws.before    //=> "\n  "
+const cloned = decl.clone({ prop: '-moz-' + decl.prop })
+cloned.raws.before  //=> "\n  "
+cloned.toString()   //=> -moz-transform: scale(0)
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + cloneBefore + (overrides = {}) + + +

+ +

Shortcut to clone the node and insert the resulting cloned node +before the current node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
overrides + object? + + = {} + Mew properties to override in the clone. +
+ + + + + + +

Returns

+ Node + : + New node + + + + + + + + +

Examples

+ + +
decl.cloneBefore({ prop: '-moz-' + decl.prop })
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + cloneAfter + (overrides = {}) + + +

+ +

Shortcut to clone the node and insert the resulting cloned node +after the current node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
overrides + object? + + = {} + New properties to override in the clone. +
+ + + + + + +

Returns

+ Node + : + New node. + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + replaceWith + (nodes) + + +

+ +

Inserts node(s) before the current node and removes the current node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
nodes + ...Node + + Mode(s) to replace current one. +
+ + + + + + +

Returns

+ Node + : + Current node to methods chain. + + + + + + + + +

Examples

+ + +
if (atrule.name === 'mixin') {
+  atrule.replaceWith(mixinRules[atrule.params])
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + next + () + + +

+ +

Returns the next child of the node’s parent. +Returns undefined if the current node is the last child.

+ + + + + + + + + + + + + + + + +

Returns

+ (Node | undefined) + : + Next node. + + + + + + + + +

Examples

+ + +
if (comment.text === 'delete next') {
+  const next = comment.next()
+  if (next) {
+    next.remove()
+  }
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + prev + () + + +

+ +

Returns the previous child of the node’s parent. +Returns undefined if the current node is the first child.

+ + + + + + + + + + + + + + + + +

Returns

+ (Node | undefined) + : + Previous node. + + + + + + + + +

Examples

+ + +
const annotation = decl.prev()
+if (annotation.type === 'comment') {
+  readAnnotation(annotation.text)
+}
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + before + (add) + + +

+ +

Insert new node before current node to current node’s parent.

+

Just alias for node.parent.insertBefore(node, add).

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
decl.before('content: ""')
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + after + (add) + + +

+ +

Insert new node after current node to current node’s parent.

+

Just alias for node.parent.insertAfter(node, add).

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
decl.after('color: black')
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + raw + (prop, defaultType?) + + +

+ +

Returns a Node#raws value. If the node is missing +the code style property (because the node was manually built or cloned), +PostCSS will try to autodetect the code style property by looking +at other nodes in the tree.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
prop + string + + Name of code style property. +
defaultType + string? + + Name of default value, it can be missed +if the value is the same as prop. +
+ + + + + + +

Returns

+ string + : + Code style value. + + + + + + + + +

Examples

+ + +
const root = postcss.parse('a { background: white }')
+root.nodes[0].append({ prop: 'color', value: 'black' })
+root.nodes[0].nodes[1].raws.before   //=> undefined
+root.nodes[0].nodes[1].raw('before') //=> ' '
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + root + () + + +

+ +

Finds the Root instance of the node’s tree.

+ + + + + + + + + + + + + + + + +

Returns

+ Root + : + Root parent. + + + + + + + + +

Examples

+ + +
root.nodes[0].nodes[0].root() === root
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + cleanRaws + (keepBetween?) + + +

+ +

Clear the code style properties for the node and its children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
keepBetween + boolean? + + Keep the raws.between symbols. +
+ + + + + + +

Returns

+ undefined + : + + + + + + + + + +

Examples

+ + +
node.raws.before  //=> ' '
+node.cleanRaws()
+node.raws.before  //=> undefined
+ + + + + + + + + + +
+ + +
+ + + + + + +
+ + + + +
+ + + +

+ + + PreviousMap + (css, opts?) + + +

+ +

Source map information from input CSS. +For example, source map after Sass compiler.

+

This class will automatically find source map in input CSS or in file system +near input file (according from option).

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
css + string + + Input CSS source. +
opts + processOptions? + + Processor#process + options. +
+ + + + + + + + + +

Examples

+ + +
const root = postcss.parse(css, { from: 'a.sass.css' })
+root.input.map //=> PreviousMap
+ + + + + + +

Instance Members

+
+ +
+ + + +

+ + + inline + () + + +

+ +

Was source map inlined by data-uri to input CSS.

+ + +

+ Type: + boolean +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + consumer + () + + +

+ +

Create a instance of SourceMapGenerator class +from the source-map library to work with source map information.

+

It is lazy method, so it will create object only on first call +and then it will use cache.

+ + + + + + + + + + + + + + + + +

Returns

+ SourceMapGenerator + : + Object with source map information. + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + withContent + () + + +

+ +

Does source map contains sourcesContent with input source text.

+ + + + + + + + + + + + + + + + +

Returns

+ boolean + : + Is +sourcesContent + present. + + + + + + + + + + + + + + + + +
+ + +
+ + + + + + +
+ + + + +
+ + + +

+ + + Processor + (plugins) + + +

+ +

Contains plugins to process CSS. Create one Processor instance, +initialize its plugins, and then use that instance on numerous CSS files.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
plugins + (Array<(Plugin | pluginFunction)> | Processor) + + = [] + PostCSS plugins. +See +Processor#use + for plugin format. +
+ + + + + + + + + +

Examples

+ + +
const processor = postcss([autoprefixer, precss])
+processor.process(css1).then(result => console.log(result.css))
+processor.process(css2).then(result => console.log(result.css))
+ + + + + + +

Instance Members

+
+ +
+ + + +

+ + + version + () + + +

+ +

Current PostCSS version.

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
if (result.processor.version.split('.')[0] !== '6') {
+  throw new Error('This plugin works only with PostCSS 6')
+}
+ + + + + + + + + + +
+ + +
+ + + +

+ + + plugins + () + + +

+ +

Plugins added to this processor.

+ + +

+ Type: + Array<pluginFunction> +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
const processor = postcss([autoprefixer, precss])
+processor.plugins.length //=> 2
+ + + + + + + + + + +
+ + +
+ + + +

+ + + use + (plugin) + + +

+ +

Adds a plugin to be used as a CSS processor.

+

PostCSS plugin can be in 4 formats:

+
    +
  • A plugin created by postcss.plugin method.
  • +
  • A function. PostCSS will pass the function a @{link Root} +as the first argument and current Result instance +as the second.
  • +
  • An object with a postcss method. PostCSS will use that method +as described in #2.
  • +
  • Another Processor instance. PostCSS will copy plugins +from that instance into this one.
  • +
+

Plugins can also be added by passing them as arguments when creating +a postcss instance (see [postcss(plugins)]).

+

Asynchronous plugins should return a Promise instance.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
plugin + (Plugin | pluginFunction | Processor) + + PostCSS plugin +or +Processor + +with plugins. +
+ + + + + + +

Returns

+ Processes + : + Current processor to make methods chain. + + + + + + + + +

Examples

+ + +
const processor = postcss()
+  .use(autoprefixer)
+  .use(precss)
+ + + + + + + + + + +
+ + +
+ + + +

+ + + process + (css, opts = {}) + + +

+ +

Parses source CSS and returns a LazyResult Promise proxy. +Because some plugins can be asynchronous it doesn’t make +any transformations. Transformations will be applied +in the LazyResult methods.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
css + (string | toString | Result) + + String with input CSS or any object +with a +toString() + method, +like a Buffer. Optionally, send +a +Result + instance +and the processor will take +the +Root + from it. +
opts + processOptions? + + = {} + Options. +
+ + + + + + +

Returns

+ LazyResult + : + Promise proxy. + + + + + + + + +

Examples

+ + +
processor.process(css, { from: 'a.css', to: 'a.out.css' })
+  .then(result => {
+     console.log(result.css)
+  })
+ + + + + + + + + + +
+ + +
+ + + + + + +
+ + + + +
+ + + +

+ + + Result + (processor, root, opts) + + +

+ +

Provides the result of the PostCSS transformations.

+

A Result instance is returned by LazyResult#then +or Root#toResult methods.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
processor + Processor + + Processor used for this transformation. +
root + Root + + Root node after all transformations. +
opts + processOptions + + Options from the +Processor#process + +or +Root#toResult +. +
+ + + + + + + + + +

Examples

+ + +
postcss([autoprefixer]).process(css).then(result => {
+ console.log(result.css)
+})
+ + +
const result2 = postcss.parse(css).toResult()
+ + + + + + +

Instance Members

+
+ +
+ + + +

+ + + processor + () + + +

+ +

The Processor instance used for this transformation.

+ + +

+ Type: + Processor +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
for (const plugin of result.processor.plugins) {
+  if (plugin.postcssPlugin === 'postcss-bad') {
+    throw 'postcss-good is incompatible with postcss-bad'
+  }
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + messages + () + + +

+ +

Contains messages from plugins (e.g., warnings or custom messages). +Each message should have type and plugin properties.

+ + +

+ Type: + Array<Message> +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
postcss.plugin('postcss-min-browser', () => {
+  return (root, result) => {
+    const browsers = detectMinBrowsersByCanIUse(root)
+    result.messages.push({
+      type: 'min-browser',
+      plugin: 'postcss-min-browser',
+      browsers
+    })
+  }
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + root + () + + +

+ +

Root node after all transformations.

+ + +

+ Type: + Root +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
root.toResult().root === root
+ + + + + + + + + + +
+ + +
+ + + +

+ + + opts + () + + +

+ +

Options from the Processor#process or Root#toResult call +that produced this Result instance.

+ + +

+ Type: + processOptions +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
root.toResult(opts).opts === opts
+ + + + + + + + + + +
+ + +
+ + + +

+ + + css + () + + +

+ +

A CSS string representing of Result#root.

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
postcss.parse('a{}').toResult().css //=> "a{}"
+ + + + + + + + + + +
+ + +
+ + + +

+ + + map + () + + +

+ +

An instance of SourceMapGenerator class from the source-map library, +representing changes to the Result#root instance.

+ + +

+ Type: + SourceMapGenerator +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
result.map.toJSON() //=> { version: 3, file: 'a.css', … }
+ + +
if (result.map) {
+  fs.writeFileSync(result.opts.to + '.map', result.map.toString())
+}
+ + + + + + + + + + +
+ + +
+ + + +

+ + + toString + () + + +

+ +

Returns for @{link Result#css} content.

+ + + + + + + + + + + + + + + + +

Returns

+ string + : + String representing of +Result#root +. + + + + + + + + +

Examples

+ + +
result + '' === result.css
+ + + + + + + + + + +
+ + +
+ + + +

+ + + warn + (text, opts = {}) + + +

+ +

Creates an instance of Warning and adds it +to Result#messages.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
text + string + + Warning message. +
opts + Object? + + = {} + Warning options. +
opts.node + Node + + CSS node that caused the warning. +
opts.word + string + + Word in CSS source that caused the warning. +
opts.index + number + + Index in CSS node string that caused +the warning. +
opts.plugin + string + + Name of the plugin that created +this warning. +Result#warn + fills +this property automatically. +
+ + + + + + +

Returns

+ Warning + : + Created warning. + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + warnings + () + + +

+ +

Returns warnings from plugins. Filters Warning instances +from Result#messages.

+ + + + + + + + + + + + + + + + +

Returns

+ Array<Warning> + : + Warnings from plugins. + + + + + + + + +

Examples

+ + +
result.warnings().forEach(warn => {
+  console.warn(warn.toString())
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + content + () + + +

+ +

An alias for the Result#css property. +Use it with syntaxes that generate non-CSS output.

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
result.css === result.content
+ + + + + + + + + + +
+ + +
+ + + + + + +
+ + + + +
+ +
+ + + Extends + + Container + + + + + + + lib/root.js + + +
+ +

+ + + Root + (defaults) + + +

+ +

Represents a CSS file and contains all its parsed nodes.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
defaults + any + +
+ + + + + + + + + +

Examples

+ + +
const root = postcss.parse('a{color:black} b{z-index:2}')
+root.type         //=> 'root'
+root.nodes.length //=> 2
+ + + + + + +

Instance Members

+
+ +
+ + + +

+ + + append + (children) + + +

+ +

Inserts new nodes to the end of the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
children + ...(Node | object | string | Array<Node>) + + New nodes. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
const decl1 = postcss.decl({ prop: 'color', value: 'black' })
+const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })
+rule.append(decl1, decl2)
+
+root.append({ name: 'charset', params: '"UTF-8"' })  // at-rule
+root.append({ selector: 'a' })                       // rule
+rule.append({ prop: 'color', value: 'black' })       // declaration
+rule.append({ text: 'Comment' })                     // comment
+
+root.append('a {}')
+root.first.append('color: black; z-index: 1')
+ + + + + + + + + + +
+ + +
+ + + +

+ + + each + (callback) + + +

+ +

Iterates through the container’s immediate children, +calling callback for each child.

+

Returning false in the callback will break iteration.

+

This method only iterates through the container’s immediate children. +If you need to recursively iterate through all the container’s descendant +nodes, use Container#walk.

+

Unlike the for {}-cycle or Array#forEach this iterator is safe +if you are mutating the array of child nodes during iteration. +PostCSS will adjust the current index to match the mutations.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
const root = postcss.parse('a { color: black; z-index: 1 }')
+const rule = root.first
+
+for (const decl of rule.nodes) {
+  decl.cloneBefore({ prop: '-webkit-' + decl.prop })
+  // Cycle will be infinite, because cloneBefore moves the current node
+  // to the next index
+}
+
+rule.each(decl => {
+  decl.cloneBefore({ prop: '-webkit-' + decl.prop })
+  // Will be executed only for color and z-index
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + every + (condition) + + +

+ +

Returns true if callback returns true +for all of the container’s children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
condition + childCondition + + Iterator returns true or false. +
+ + + + + + +

Returns

+ boolean + : + Is every child pass condition. + + + + + + + + +

Examples

+ + +
const noPrefixes = rule.every(i => i.prop[0] !== '-')
+ + + + + + + + + + +
+ + +
+ + + +

+ + + first + () + + +

+ +

The container’s first child.

+ + +

+ Type: + Node +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
rule.first === rules.nodes[0]
+ + + + + + + + + + +
+ + +
+ + + +

+ + + index + (child) + + +

+ +

Returns a child’s index within the Container#nodes array.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
child + Node + + Child of the current container. +
+ + + + + + +

Returns

+ number + : + Child index. + + + + + + + + +

Examples

+ + +
rule.index( rule.nodes[2] ) //=> 2
+ + + + + + + + + + +
+ + +
+ + + +

+ + + insertAfter + (exist, add) + + +

+ +

Insert new node after old node within the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
exist + (Node | number) + + Child or child’s index. +
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + insertBefore + (exist, add) + + +

+ +

Insert new node before old node within the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
exist + (Node | number) + + Child or child’s index. +
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }))
+ + + + + + + + + + +
+ + +
+ + + +

+ + + last + () + + +

+ +

The container’s last child.

+ + +

+ Type: + Node +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
rule.last === rule.nodes[rule.nodes.length - 1]
+ + + + + + + + + + +
+ + +
+ + + +

+ + + prepend + (children) + + +

+ +

Inserts new nodes to the start of the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
children + ...(Node | object | string | Array<Node>) + + New nodes. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
const decl1 = postcss.decl({ prop: 'color', value: 'black' })
+const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })
+rule.prepend(decl1, decl2)
+
+root.append({ name: 'charset', params: '"UTF-8"' })  // at-rule
+root.append({ selector: 'a' })                       // rule
+rule.append({ prop: 'color', value: 'black' })       // declaration
+rule.append({ text: 'Comment' })                     // comment
+
+root.append('a {}')
+root.first.append('color: black; z-index: 1')
+ + + + + + + + + + +
+ + +
+ + + +

+ + + removeAll + () + + +

+ +

Removes all children from the container +and cleans their parent properties.

+ + + + + + + + + + + + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
rule.removeAll()
+rule.nodes.length //=> 0
+ + + + + + + + + + +
+ + +
+ + + +

+ + + removeChild + (child) + + +

+ +

Removes node from the container and cleans the parent properties +from the node and its children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
child + (Node | number) + + Child or child’s index. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain + + + + + + + + +

Examples

+ + +
rule.nodes.length  //=> 5
+rule.removeChild(decl)
+rule.nodes.length  //=> 4
+decl.parent        //=> undefined
+ + + + + + + + + + +
+ + +
+ + + +

+ + + replaceValues + (pattern, opts, callback) + + +

+ +

Passes all declaration values within the container that match pattern +through callback, replacing those values with the returned result +of callback.

+

This method is useful if you are using a custom unit or function +and need to iterate through all values.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
pattern + (string | RegExp) + + Replace pattern. +
opts + object + + Options to speed up the search. +
opts.props + (string | Array<string>) + + An array of property names. +
opts.fast + string + + String that’s used to narrow down +values and speed up the regexp search. +
callback + (function | string) + + String to replace pattern or callback +that returns a new value. The callback +will receive the same arguments +as those passed to a function parameter +of +String#replace +. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
root.replaceValues(/\d+rem/, { fast: 'rem' }, string => {
+  return 15 * parseInt(string) + 'px'
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walk + (callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each node.

+

Like container.each(), this method is safe to use +if you are mutating arrays during iteration.

+

If you only need to iterate through the container’s immediate children, +use Container#each.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walk(node => {
+  // Traverses all descendant nodes.
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkAtRules + (name?, callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each at-rule node.

+

If you pass a filter, iteration will only happen over at-rules +that have matching names.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
name + (string | RegExp)? + + String or regular expression +to filter at-rules by name. +
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walkAtRules(rule => {
+  if (isOld(rule.name)) rule.remove()
+})
+
+let first = false
+root.walkAtRules('charset', rule => {
+  if (!first) {
+    first = true
+  } else {
+    rule.remove()
+  }
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkComments + (callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each comment node.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walkComments(comment => {
+  comment.remove()
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkRules + (selector?, callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each rule node.

+

If you pass a filter, iteration will only happen over rules +with matching selectors.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
selector + (string | RegExp)? + + String or regular expression +to filter rules by selector. +
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
const selectors = []
+root.walkRules(rule => {
+  selectors.push(rule.selector)
+})
+console.log(`Your CSS uses ${ selectors.length } selectors`)
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/root.js + + +
+ +

+ + + on + (type?, callback?) + + +

+ +

The method registrations the plugins in postcss to their bypass with +algorithm visitor. The plugin must subscribes to the type of the node. +It can be "atrule", "rule", "decl", "comment". Example: "atrule" is +"@media", "@keyframes"; "rule" is selector (class, id, tag); "decl" is +property (color, border, etc.); "comment" is comment. The plugin will +call on the type of the node to which it is subscribed. The plugin can +be subscribed at the enter to node or at the exit from node. The plugin get +node and index.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
type + string? + + The type of the node ("atrule", "rule", +"decl", "comment"). +
callback + function? + + Function receives node and index. +
+ + + + + + +

Returns

+ undefined + : + + + + + + + + + +

Examples

+ + +
css.on("decl", (node, index) => {})
+// is shorthand for
+css.on("decl.enter", (node, index) => {})
+
+css.on("decl.exit", (node, index) => {})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + some + (condition) + + +

+ +

Returns true if callback returns true for (at least) one +of the container’s children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
condition + childCondition + + Iterator returns true or false. +
+ + + + + + +

Returns

+ boolean + : + Is some child pass condition. + + + + + + + + +

Examples

+ + +
const hasPrefix = rule.some(i => i.prop[0] === '-')
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/root.js + + +
+ +

+ + + toResult + (opts = {}) + + +

+ +

Returns a Result instance representing the root’s CSS.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
opts + processOptions? + + = {} + Options with only +to + and +map + keys. +
+ + + + + + +

Returns

+ Result + : + Result with current root’s CSS. + + + + + + + + +

Examples

+ + +
const root1 = postcss.parse(css1, { from: 'a.css' })
+const root2 = postcss.parse(css2, { from: 'b.css' })
+root1.append(root2)
+const result = root1.toResult({ to: 'all.css', map: true })
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkDecls + (prop?, callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each declaration node.

+

If you pass a filter, iteration will only happen over declarations +with matching properties.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
prop + (string | RegExp)? + + String or regular expression +to filter declarations by property name. +
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walkDecls(decl => {
+  checkPropertySupport(decl.prop)
+})
+
+root.walkDecls('border-radius', decl => {
+  decl.remove()
+})
+
+root.walkDecls(/^background/, decl => {
+  decl.value = takeFirstColorFromGradient(decl.value)
+})
+ + + + + + + + + + +
+ + +
+ + + + + + +
+ + + + +
+ +
+ + + Extends + + Container + + + + + + + lib/rule.js + + +
+ +

+ + + Rule + (defaults) + + +

+ +

Represents a CSS rule: a selector followed by a declaration block.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
defaults + any + +
+ + + + + + + + + +

Examples

+ + +
const root = postcss.parse('a{}')
+const rule = root.first
+rule.type       //=> 'rule'
+rule.toString() //=> 'a{}'
+ + + + + + +

Instance Members

+
+ +
+ + + +

+ + + append + (children) + + +

+ +

Inserts new nodes to the end of the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
children + ...(Node | object | string | Array<Node>) + + New nodes. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
const decl1 = postcss.decl({ prop: 'color', value: 'black' })
+const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })
+rule.append(decl1, decl2)
+
+root.append({ name: 'charset', params: '"UTF-8"' })  // at-rule
+root.append({ selector: 'a' })                       // rule
+rule.append({ prop: 'color', value: 'black' })       // declaration
+rule.append({ text: 'Comment' })                     // comment
+
+root.append('a {}')
+root.first.append('color: black; z-index: 1')
+ + + + + + + + + + +
+ + +
+ + + +

+ + + each + (callback) + + +

+ +

Iterates through the container’s immediate children, +calling callback for each child.

+

Returning false in the callback will break iteration.

+

This method only iterates through the container’s immediate children. +If you need to recursively iterate through all the container’s descendant +nodes, use Container#walk.

+

Unlike the for {}-cycle or Array#forEach this iterator is safe +if you are mutating the array of child nodes during iteration. +PostCSS will adjust the current index to match the mutations.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
const root = postcss.parse('a { color: black; z-index: 1 }')
+const rule = root.first
+
+for (const decl of rule.nodes) {
+  decl.cloneBefore({ prop: '-webkit-' + decl.prop })
+  // Cycle will be infinite, because cloneBefore moves the current node
+  // to the next index
+}
+
+rule.each(decl => {
+  decl.cloneBefore({ prop: '-webkit-' + decl.prop })
+  // Will be executed only for color and z-index
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + every + (condition) + + +

+ +

Returns true if callback returns true +for all of the container’s children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
condition + childCondition + + Iterator returns true or false. +
+ + + + + + +

Returns

+ boolean + : + Is every child pass condition. + + + + + + + + +

Examples

+ + +
const noPrefixes = rule.every(i => i.prop[0] !== '-')
+ + + + + + + + + + +
+ + +
+ + + +

+ + + first + () + + +

+ +

The container’s first child.

+ + +

+ Type: + Node +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
rule.first === rules.nodes[0]
+ + + + + + + + + + +
+ + +
+ + + +

+ + + index + (child) + + +

+ +

Returns a child’s index within the Container#nodes array.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
child + Node + + Child of the current container. +
+ + + + + + +

Returns

+ number + : + Child index. + + + + + + + + +

Examples

+ + +
rule.index( rule.nodes[2] ) //=> 2
+ + + + + + + + + + +
+ + +
+ + + +

+ + + insertAfter + (exist, add) + + +

+ +

Insert new node after old node within the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
exist + (Node | number) + + Child or child’s index. +
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + insertBefore + (exist, add) + + +

+ +

Insert new node before old node within the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
exist + (Node | number) + + Child or child’s index. +
add + (Node | object | string | Array<Node>) + + New node. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }))
+ + + + + + + + + + +
+ + +
+ + + +

+ + + last + () + + +

+ +

The container’s last child.

+ + +

+ Type: + Node +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
rule.last === rule.nodes[rule.nodes.length - 1]
+ + + + + + + + + + +
+ + +
+ + + +

+ + + prepend + (children) + + +

+ +

Inserts new nodes to the start of the container.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
children + ...(Node | object | string | Array<Node>) + + New nodes. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
const decl1 = postcss.decl({ prop: 'color', value: 'black' })
+const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })
+rule.prepend(decl1, decl2)
+
+root.append({ name: 'charset', params: '"UTF-8"' })  // at-rule
+root.append({ selector: 'a' })                       // rule
+rule.append({ prop: 'color', value: 'black' })       // declaration
+rule.append({ text: 'Comment' })                     // comment
+
+root.append('a {}')
+root.first.append('color: black; z-index: 1')
+ + + + + + + + + + +
+ + +
+ + + +

+ + + removeAll + () + + +

+ +

Removes all children from the container +and cleans their parent properties.

+ + + + + + + + + + + + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
rule.removeAll()
+rule.nodes.length //=> 0
+ + + + + + + + + + +
+ + +
+ + + +

+ + + removeChild + (child) + + +

+ +

Removes node from the container and cleans the parent properties +from the node and its children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
child + (Node | number) + + Child or child’s index. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain + + + + + + + + +

Examples

+ + +
rule.nodes.length  //=> 5
+rule.removeChild(decl)
+rule.nodes.length  //=> 4
+decl.parent        //=> undefined
+ + + + + + + + + + +
+ + +
+ + + +

+ + + replaceValues + (pattern, opts, callback) + + +

+ +

Passes all declaration values within the container that match pattern +through callback, replacing those values with the returned result +of callback.

+

This method is useful if you are using a custom unit or function +and need to iterate through all values.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
pattern + (string | RegExp) + + Replace pattern. +
opts + object + + Options to speed up the search. +
opts.props + (string | Array<string>) + + An array of property names. +
opts.fast + string + + String that’s used to narrow down +values and speed up the regexp search. +
callback + (function | string) + + String to replace pattern or callback +that returns a new value. The callback +will receive the same arguments +as those passed to a function parameter +of +String#replace +. +
+ + + + + + +

Returns

+ Node + : + This node for methods chain. + + + + + + + + +

Examples

+ + +
root.replaceValues(/\d+rem/, { fast: 'rem' }, string => {
+  return 15 * parseInt(string) + 'px'
+})
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/rule.js + + +
+ +

+ + + selectors + () + + +

+ +

An array containing the rule’s individual selectors. +Groups of selectors are split at commas.

+ + +

+ Type: + Array<string> +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
const root = postcss.parse('a, b { }')
+const rule = root.first
+
+rule.selector  //=> 'a, b'
+rule.selectors //=> ['a', 'b']
+
+rule.selectors = ['a', 'strong']
+rule.selector //=> 'a, strong'
+ + + + + + + + + + +
+ + +
+ + + +

+ + + some + (condition) + + +

+ +

Returns true if callback returns true for (at least) one +of the container’s children.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
condition + childCondition + + Iterator returns true or false. +
+ + + + + + +

Returns

+ boolean + : + Is some child pass condition. + + + + + + + + +

Examples

+ + +
const hasPrefix = rule.some(i => i.prop[0] === '-')
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walk + (callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each node.

+

Like container.each(), this method is safe to use +if you are mutating arrays during iteration.

+

If you only need to iterate through the container’s immediate children, +use Container#each.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walk(node => {
+  // Traverses all descendant nodes.
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkAtRules + (name?, callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each at-rule node.

+

If you pass a filter, iteration will only happen over at-rules +that have matching names.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
name + (string | RegExp)? + + String or regular expression +to filter at-rules by name. +
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walkAtRules(rule => {
+  if (isOld(rule.name)) rule.remove()
+})
+
+let first = false
+root.walkAtRules('charset', rule => {
+  if (!first) {
+    first = true
+  } else {
+    rule.remove()
+  }
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkComments + (callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each comment node.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walkComments(comment => {
+  comment.remove()
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkDecls + (prop?, callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each declaration node.

+

If you pass a filter, iteration will only happen over declarations +with matching properties.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
prop + (string | RegExp)? + + String or regular expression +to filter declarations by property name. +
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
root.walkDecls(decl => {
+  checkPropertySupport(decl.prop)
+})
+
+root.walkDecls('border-radius', decl => {
+  decl.remove()
+})
+
+root.walkDecls(/^background/, decl => {
+  decl.value = takeFirstColorFromGradient(decl.value)
+})
+ + + + + + + + + + +
+ + +
+ + + +

+ + + walkRules + (selector?, callback) + + +

+ +

Traverses the container’s descendant nodes, calling callback +for each rule node.

+

If you pass a filter, iteration will only happen over rules +with matching selectors.

+

Like Container#each, this method is safe +to use if you are mutating arrays during iteration.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
selector + (string | RegExp)? + + String or regular expression +to filter rules by selector. +
callback + childIterator + + Iterator receives each node and index. +
+ + + + + + +

Returns

+ (false | undefined) + : + returns +false + if iteration was broke. + + + + + + + + +

Examples

+ + +
const selectors = []
+root.walkRules(rule => {
+  selectors.push(rule.selector)
+})
+console.log(`Your CSS uses ${ selectors.length } selectors`)
+ + + + + + + + + + +
+ + +
+ + + + + + +
+ + + + +
+ + + +

+ + + Warning + (text, opts = {}) + + +

+ +

Represents a plugin’s warning. It can be created using Node#warn.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
text + string + + Warning message. +
opts + Object? + + = {} + Warning options. +
+ + + + + + + + + +

Examples

+ + +
if (decl.important) {
+  decl.warn(result, 'Avoid !important', { word: '!important' })
+}
+ + + + + + +

Instance Members

+
+ +
+ + + +

+ + + type + () + + +

+ +

Type to filter warnings from Result#messages. +Always equal to "warning".

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
const nonWarning = result.messages.filter(i => i.type !== 'warning')
+ + + + + + + + + + +
+ + +
+ + + +

+ + + text + () + + +

+ +

The warning message.

+ + +

+ Type: + string +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
warning.text //=> 'Try to avoid !important'
+ + + + + + + + + + +
+ + +
+ + + +

+ + + line + () + + +

+ +

Line in the input file with this warning’s source.

+ + +

+ Type: + number +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
warning.line //=> 5
+ + + + + + + + + + +
+ + +
+ + + +

+ + + column + () + + +

+ +

Column in the input file with this warning’s source.

+ + +

+ Type: + number +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
warning.column //=> 6
+ + + + + + + + + + +
+ + +
+ + + +

+ + + toString + () + + +

+ +

Returns a warning position and message.

+ + + + + + + + + + + + + + + + +

Returns

+ string + : + Warning position and message. + + + + + + + + +

Examples

+ + +
warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important'
+ + + + + + + + + + +
+ + +
+ + + + + + +
+ + + + +
+
+ +

+ NAMESPACES +

+ + + + + +
+
+ + + +
+ +
+ + + + + lib/list.js + + +
+ +

+ + + list + () + + +

+ +

Contains helpers for safely splitting lists of CSS values, +preserving parentheses and quotes.

+ + + + + + + + + + + + + + + + + + + +

Examples

+ + +
const list = postcss.list
+ + + + +

Static Members

+
+ +
+ +
+ + + + + lib/list.js + + +
+ +

+ + + space + (string) + + +

+ +

Safely splits space-separated values (such as those for background, +border-radius, and other shorthand properties).

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
string + string + + Space-separated values. +
+ + + + + + +

Returns

+ Array<string> + : + Split values. + + + + + + + + +

Examples

+ + +
postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']
+ + + + + + + + + + +
+ + +
+ +
+ + + + + lib/list.js + + +
+ +

+ + + comma + (string) + + +

+ +

Safely splits comma-separated values (such as those for transition-* +and background properties).

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
string + string + + Comma-separated values. +
+ + + + + + +

Returns

+ Array<string> + : + Split values. + + + + + + + + +

Examples

+ + +
postcss.list.comma('black, linear-gradient(white, black)')
+//=> ['black', 'linear-gradient(white, black)']
+ + + + + + + + + + +
+ + +
+ + + + + + + + +
+ + + + +
+ + + +

+ + + postcss + (plugins) + + +

+ +

Create a new Processor instance that will apply plugins +as CSS processors.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
plugins + (Array<(Plugin | pluginFunction)> | Processor) + + PostCSS plugins. +See +Processor#use + for plugin format. +
+ + + + + + +

Returns

+ Processor + : + Processor to process multiple CSS. + + + + + + + + +

Examples

+ + +
let postcss = require('postcss')
+
+postcss(plugins).process(css, { from, to }).then(result => {
+  console.log(result.css)
+})
+ + + + +

Static Members

+
+ +
+ + + +

+ + + plugin + (name, initializer) + + +

+ +

Creates a PostCSS plugin with a standard API.

+

The newly-wrapped function will provide both the name and PostCSS +version of the plugin.

+
const processor = postcss([replace])
+processor.plugins[0].postcssPlugin  //=> 'postcss-replace'
+processor.plugins[0].postcssVersion //=> '6.0.0'
+

The plugin function receives 2 arguments: Root +and Result instance. The function should mutate the provided +Root node. Alternatively, you can create a new Root node +and override the result.root property.

+
const cleaner = postcss.plugin('postcss-cleaner', () => {
+  return (root, result) => {
+    result.root = postcss.root()
+  }
+})
+

As a convenience, plugins also expose a process method so that you can use +them as standalone tools.

+
cleaner.process(css, processOpts, pluginOpts)
+// This is equivalent to:
+postcss([ cleaner(pluginOpts) ]).process(css, processOpts)
+

Asynchronous plugins should return a Promise instance.

+
postcss.plugin('postcss-import', () => {
+  return (root, result) => {
+    return new Promise( (resolve, reject) => {
+      fs.readFile('base.css', (base) => {
+        root.prepend(base)
+        resolve()
+      })
+    })
+  }
+})
+

Add warnings using the Node#warn method. +Send data to other plugins using the Result#messages array.

+
postcss.plugin('postcss-caniuse-test', () => {
+  return (root, result) => {
+    root.walkDecls(decl => {
+      if (!caniuse.support(decl.prop)) {
+        decl.warn(result, 'Some browsers do not support ' + decl.prop)
+      }
+    })
+  }
+})
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
name + string + + PostCSS plugin name. Same as in +name + +property in +package.json +. It will be saved +in +plugin.postcssPlugin + property. +
initializer + function + + Will receive plugin options +and should return +pluginFunction +
+ + + + + + +

Returns

+ Plugin + : + PostCSS plugin. + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + stringify + (node, builder) + + +

+ +

Default function to convert a node tree into a CSS string.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
node + Node + + Start node for stringifing. Usually +Root +. +
builder + builder + + Function to concatenate CSS from node’s parts +or generate string and source map. +
+ + + + + + +

Returns

+ void + : + + + + + + + + + + + + + + + + + +
+ + +
+ + + +

+ + + parse + (css, opts?) + + +

+ +

Parses source css and returns a new Root node, +which contains the source CSS nodes.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
css + (string | toString) + + String with input CSS or any object +with toString() method, like a Buffer +
opts + processOptions? + + Options with only +from + and +map + keys. +
+ + + + + + +

Returns

+ Root + : + PostCSS AST. + + + + + + + + +

Examples

+ + +
// Simple CSS concatenation with source map support
+const root1 = postcss.parse(css1, { from: file1 })
+const root2 = postcss.parse(css2, { from: file2 })
+root1.append(root2).toResult().css
+ + + + + + + + + + +
+ + +
+ + + +

+ + + vendor + () + + +

+ +

Contains the vendor module.

+ + +

+ Type: + vendor +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
postcss.vendor.unprefixed('-moz-tab') //=> ['tab']
+ + + + + + + + + + +
+ + +
+ + + +

+ + + list + () + + +

+ +

Contains the list module.

+ + +

+ Type: + list +

+ + + + + + + + + + + + + + + + + + +

Examples

+ + +
postcss.list.space('5px calc(10% + 5px)') //=> ['5px', 'calc(10% + 5px)']
+ + + + + + + + + + +
+ + +
+ + + +

+ + + comment + (defaults?) + + +

+ +

Creates a new Comment node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
defaults + object? + + Properties for the new node. +
+ + + + + + +

Returns

+ Comment + : + New comment node + + + + + + + + +

Examples

+ + +
postcss.comment({ text: 'test' })
+ + + + + + + + + + +
+ + +
+ + + +

+ + + atRule + (defaults?) + + +

+ +

Creates a new AtRule node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
defaults + object? + + Properties for the new node. +
+ + + + + + +

Returns

+ AtRule + : + new at-rule node + + + + + + + + +

Examples

+ + +
postcss.atRule({ name: 'charset' }).toString() //=> "@charset"
+ + + + + + + + + + +
+ + +
+ + + +

+ + + decl + (defaults?) + + +

+ +

Creates a new Declaration node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
defaults + object? + + Properties for the new node. +
+ + + + + + +

Returns

+ Declaration + : + new declaration node + + + + + + + + +

Examples

+ + +
postcss.decl({ prop: 'color', value: 'red' }).toString() //=> "color: red"
+ + + + + + + + + + +
+ + +
+ + + +

+ + + rule + (defaults?) + + +

+ +

Creates a new Rule node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
defaults + object? + + Properties for the new node. +
+ + + + + + +

Returns

+ Rule + : + new rule node + + + + + + + + +

Examples

+ + +
postcss.rule({ selector: 'a' }).toString() //=> "a {\n}"
+ + + + + + + + + + +
+ + +
+ + + +

+ + + root + (defaults?) + + +

+ +

Creates a new Root node.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
defaults + object? + + Properties for the new node. +
+ + + + + + +

Returns

+ Root + : + new root node. + + + + + + + + +

Examples

+ + +
postcss.root({ after: '\n' }).toString() //=> "\n"
+ + + + + + + + + + +
+ + +
+ + + + + + + + +
+ + + + +
+ + + +

+ + + vendor + () + + +

+ +

Contains helpers for working with vendor prefixes.

+ + + + + + + + + + + + + + + + + + + +

Examples

+ + +
const vendor = postcss.vendor
+ + + + +

Static Members

+
+ +
+ + + +

+ + + prefix + (prop) + + +

+ +

Returns the vendor prefix extracted from an input string.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
prop + string + + String with or without vendor prefix. +
+ + + + + + +

Returns

+ string + : + vendor prefix or empty string + + + + + + + + +

Examples

+ + +
postcss.vendor.prefix('-moz-tab-size') //=> '-moz-'
+postcss.vendor.prefix('tab-size')      //=> ''
+ + + + + + + + + + +
+ + +
+ + + +

+ + + unprefixed + (prop) + + +

+ +

Returns the input string stripped of its vendor prefix.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
prop + string + + String with or without vendor prefix. +
+ + + + + + +

Returns

+ string + : + String name without vendor prefixes. + + + + + + + + +

Examples

+ + +
postcss.vendor.unprefixed('-moz-tab-size') //=> 'tab-size'
+ + + + + + + + + + +
+ + +
+ + + + + + + + +
+ + + + +
+
+ +

+ GLOBAL +

+ + + + + +
+
+ + + +
+ + + +

+ + + Message + () + + +

+ + + +

+ Type: + object +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
propertytypedescription
type + string + + : Message type. +
plugin + string + + : Source PostCSS plugin name. +
+ + + + + + + + + + + + + + + +
+ + + + +
+ + + +

+ + + Plugin + () + + +

+ + + +

+ Type: + object +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
propertytypedescription
postcss + function + + : PostCSS plugin function. +
+ + + + + + + + + + + + + + + +
+ + + + +
+ + + +

+ + + builder + (part, node, type?) + + +

+ + + +

+ Type: + Function +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
part + string + + Part of generated CSS connected to this node. +
node + Node + + AST node. +
type + ("start" | "end")? + + Node’s part type. +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+ + + +

+ + + childCondition + (node, index, nodes) + + +

+ + + +

+ Type: + Function +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
node + Node + + Container child. +
index + number + + Child index. +
nodes + Array<Node> + + All container children. +
+ + + + + + +

Returns

+ boolean + : + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + +

+ + + childIterator + (node, index) + + +

+ + + +

+ Type: + Function +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
node + Node + + Container child. +
index + number + + Child index. +
+ + + + + + +

Returns

+ (false | undefined) + : + Returning +false + will break iteration. + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+ + + + + lib/input.js + + +
+ +

+ + + filePosition + () + + +

+ + + +

+ Type: + object +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
propertytypedescription
file + string + + : Path to file. +
line + number + + : Source line in file. +
column + number + + : Source column in file. +
+ + + + + + + + + + + + + + + +
+ + + + +
+ + + +

+ + + onFulfilled + (result) + + +

+ + + +

+ Type: + Function +

+ + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
result + Result + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+ + + +

+ + + onRejected + (error) + + +

+ + + +

+ Type: + Function +

+ + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
error + Error + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+ + + +

+ + + parser + (css, opts?) + + +

+ + + +

+ Type: + Function +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
css + (string | toString) + + String with input CSS or any object +with toString() method, like a Buffer. +
opts + processOptions? + + Options with only +from + and +map + keys. +
+ + + + + + +

Returns

+ Root + : + PostCSS AST + + + + + + + + + + + + + + + + +
+ + + + +
+ + + +

+ + + pluginFunction + (root, result) + + +

+ + + +

+ Type: + Function +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
root + Root + + Parsed input CSS. +
result + Result + + Result to set warnings or check other plugins. +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + position + () + + +

+ + + +

+ Type: + object +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
propertytypedescription
line + number + + : Source line in file. +
column + number + + : Source column in file. +
+ + + + + + + + + + + + + + + +
+ + + + +
+ + + +

+ + + processOptions + () + + +

+ + + +

+ Type: + object +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
propertytypedescription
from + string + + : The path of the CSS source file. +You should always set +from +, +because it is used in source map +generation and syntax error messages. +
to + string + + : The path where you’ll put the output +CSS file. You should always set +to + +to generate correct source maps. +
parser + parser + + : Function to generate AST by string. +
stringifier + stringifier + + : Class to generate string by AST. +
syntax + syntax + + : Object with +parse + and +stringify +. +
map + object + + : Source map options. +
map + object + + : Source map options. +
+ + + + + + + + + + + + + + + +
+ + + + +
+ +
+ + + + + lib/node.js + + +
+ +

+ + + source + () + + +

+ + + +

+ Type: + object +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
propertytypedescription
input + Input + + : Input + with input file +
start + position + + : The starting position of the node’s source. +
end + position + + : The ending position of the node’s source. +
+ + + + + + + + + + + + + + + +
+ + + + +
+ + + +

+ + + stringifier + (node, builder) + + +

+ + + +

+ Type: + Function +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parametertypedescription
node + Node + + Start node for stringifing. Usually +Root +. +
builder + builder + + Function to concatenate CSS from node’s parts +or generate string and source map. +
+ + + + + + +

Returns

+ void + : + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + +

+ + + syntax + () + + +

+ + + +

+ Type: + object +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
propertytypedescription
parse + parser + + : Function to generate AST by string. +
stringify + stringifier + + : Function to generate string by AST. +
+ + + + + + + + + + + + + + + +
+ + + + +
+ + + +

+ + + toString + () + + +

+ + + +

+ Type: + object +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
propertytypedescription
toString + function + +
+ + + + + + + + + + + + + + + +
+ + + +
+
+
+
+ + + -- cgit v1.2.3