diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:05:55 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:05:55 +0800 |
| commit | c06f7ee0a40255214c477e13d9b956a7e07c2900 (patch) | |
| tree | f5982a568ef8fab865d0142e71c7494fea3e4c1b /node_modules/postcss-discard-empty/src | |
| parent | 3fd9400d4dccc25aa29b5702216732e0b7542073 (diff) | |
postcss,(plugins): nanocss, postcss-preset-env
Diffstat (limited to 'node_modules/postcss-discard-empty/src')
| -rw-r--r-- | node_modules/postcss-discard-empty/src/index.js | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/node_modules/postcss-discard-empty/src/index.js b/node_modules/postcss-discard-empty/src/index.js new file mode 100644 index 00000000..77f32494 --- /dev/null +++ b/node_modules/postcss-discard-empty/src/index.js @@ -0,0 +1,57 @@ +'use strict'; +const plugin = 'postcss-discard-empty'; +/** + * @param {import('postcss').Root} css + * @param {import('postcss').Result} result + * @return {void} + */ +function discardAndReport(css, result) { + /** + * @param {import('postcss').AnyNode} node + * @return {void} + */ + function discardEmpty(node) { + const { type } = node; + /** @type {(import('postcss').ChildNode | import('postcss').ChildProps)[] | undefined} */ + const sub = /** @type {any} */ (node).nodes; + if (sub) { + /** @type {import('postcss').Container} */ (node).each(discardEmpty); + } + + if ( + (type === 'decl' && !node.value && !node.prop.startsWith('--')) || + (type === 'rule' && !node.selector) || + (sub && !sub.length) || + (type === 'atrule' && + ((!sub && !node.params) || + (!node.params && + !(/** @type {import('postcss').ChildNode[]}*/ (sub).length)))) + ) { + node.remove(); + + result.messages.push({ + type: 'removal', + plugin, + node, + }); + } + } + + css.each(discardEmpty); +} + +/** + * @type {import('postcss').PluginCreator<void>} + * @return {import('postcss').Plugin} + */ +function pluginCreator() { + return { + postcssPlugin: plugin, + OnceExit(css, { result }) { + discardAndReport(css, result); + }, + }; +} + +pluginCreator.postcss = true; +module.exports = pluginCreator; |
