diff --git a/src/printer-postcss.js b/src/printer-postcss.js index 50f82e66..eab189d1 100644 --- a/src/printer-postcss.js +++ b/src/printer-postcss.js @@ -337,7 +337,23 @@ function printNodeSequence(path, options, print) { const parts = []; let i = 0; path.map(pathChild => { - parts.push(pathChild.call(print)); + const prevNode = node.nodes[i - 1]; + if ( + prevNode && + prevNode.type === "css-comment" && + prevNode.text.trim() === "prettier-ignore" + ) { + const childNode = pathChild.getValue(); + parts.push( + options.originalText.slice( + util.locStart(childNode), + util.locEnd(childNode) + ) + ); + } else { + parts.push(pathChild.call(print)); + } + if (i !== node.nodes.length - 1) { if ( (node.nodes[i + 1].type === "css-comment" && diff --git a/tests/css_comments/__snapshots__/jsfmt.spec.js.snap b/tests/css_comments/__snapshots__/jsfmt.spec.js.snap index 4899cb6b..5ce317f0 100644 --- a/tests/css_comments/__snapshots__/jsfmt.spec.js.snap +++ b/tests/css_comments/__snapshots__/jsfmt.spec.js.snap @@ -67,6 +67,29 @@ div { `; +exports[`prettier-ignore.css 1`] = ` +// prettier-ignore +@blue: blue; +@black: darkgray; + +foo { + /* prettier-ignore */ + thing: foo; + -ms-thing: foo; +} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// prettier-ignore +@blue: blue; +@black: darkgray; + +foo { + /* prettier-ignore */ + thing: foo; + -ms-thing: foo; +} + +`; + exports[`selector.css 1`] = ` .powerPathNavigator .helm button.pressedButton, /* pressed buttons */ .powerPathNavigator .helm button:active:not(.disabledButton), diff --git a/tests/css_comments/prettier-ignore.css b/tests/css_comments/prettier-ignore.css new file mode 100644 index 00000000..ba150580 --- /dev/null +++ b/tests/css_comments/prettier-ignore.css @@ -0,0 +1,9 @@ +// prettier-ignore +@blue: blue; +@black: darkgray; + +foo { + /* prettier-ignore */ + thing: foo; + -ms-thing: foo; +}