diff --git a/package.json b/package.json index d31672fe..8b5df53b 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,6 @@ "minimatch": "3.0.4", "minimist": "1.2.0", "parse5": "3.0.2", - "postcss": "^6.0.1", "postcss-less": "^1.0.0", "postcss-media-query-parser": "0.2.3", "postcss-scss": "1.0.0", diff --git a/src/cli-constant.js b/src/cli-constant.js index 39778be2..40db6ce7 100644 --- a/src/cli-constant.js +++ b/src/cli-constant.js @@ -185,7 +185,17 @@ const detailedOptions = normalizeDetailedOptions({ category: CATEGORY_FORMAT, forwardToApi: true, exception: value => typeof value === "string", // Allow path to a parser module. - choices: ["flow", "babylon", "typescript", "postcss", "json", "graphql"], + choices: [ + "flow", + "babylon", + "typescript", + "css", + { value: "postcss", deprecated: true, redirect: "css" }, + "less", + "scss", + "json", + "graphql" + ], description: "Which parser to use.", getter: (value, argv) => (argv["flow-parser"] ? "flow" : value) }, diff --git a/src/multiparser.js b/src/multiparser.js index 574b5fa7..e803bf9b 100644 --- a/src/multiparser.js +++ b/src/multiparser.js @@ -48,7 +48,7 @@ function fromBabylonFlowOrTypeScript(path) { const rawQuasis = node.quasis.map(q => q.value.raw); const text = rawQuasis.join("@prettier-placeholder"); return { - options: { parser: "postcss" }, + options: { parser: "css" }, transformDoc: transformCssDoc, text: text }; @@ -133,7 +133,7 @@ function fromHtmlParser2(path, options) { // Inline Styles if (parent.type === "style") { return { - options: { parser: "postcss" }, + options: { parser: "css" }, transformDoc: doc => concat([hardline, stripTrailingHardline(doc)]), text: getText(options, node) }; diff --git a/src/options.js b/src/options.js index 7bfaa140..f4a773ca 100644 --- a/src/options.js +++ b/src/options.js @@ -30,8 +30,12 @@ function normalize(options) { const normalized = Object.assign({}, options || {}); const filepath = normalized.filepath; - if (/\.(css|less|scss)$/.test(filepath)) { - normalized.parser = "postcss"; + if (/\.css$/.test(filepath)) { + normalized.parser = "css"; + } else if (/\.less$/.test(filepath)) { + normalized.parser = "less"; + } else if (/\.scss$/.test(filepath)) { + normalized.parser = "scss"; } else if (/\.html$/.test(filepath)) { normalized.parser = "parse5"; } else if (/\.(ts|tsx)$/.test(filepath)) { @@ -58,6 +62,16 @@ function normalize(options) { ); } + /* istanbul ignore if */ + if (normalized.parser === "postcss") { + normalized.parser = "css"; + + console.warn( + 'Warning: `parser` with value "postcss" is deprecated. ' + + 'Use "css", "less" or "scss" instead.' + ); + } + const parserBackup = normalized.parser; if (typeof normalized.parser === "function") { // Delete the function from the object to pass validation. diff --git a/src/parser-postcss.js b/src/parser-postcss.js index 19c6397f..6c2868f0 100644 --- a/src/parser-postcss.js +++ b/src/parser-postcss.js @@ -227,15 +227,27 @@ function requireParser(isSCSS) { return require("postcss-less"); } -function parse(text /*, parsers, opts*/) { - const isLikelySCSS = !!text.match(/(\w\s*: [^}:]+|#){|@import[^\n]+(url|,)/); +const IS_POSSIBLY_SCSS = /(\w\s*: [^}:]+|#){|@import[^\n]+(url|,)/; + +function parse(text, parsers, opts) { + const hasExplicitParserChoice = + opts.parser === "less" || opts.parser === "scss"; + + const isSCSS = hasExplicitParserChoice + ? opts.parser === "scss" + : IS_POSSIBLY_SCSS.test(text); + try { - return parseWithParser(requireParser(isLikelySCSS), text); - } catch (e) { + return parseWithParser(requireParser(isSCSS), text); + } catch (originalError) { + if (hasExplicitParserChoice) { + throw originalError; + } + try { - return parseWithParser(requireParser(!isLikelySCSS), text); - } catch (e2) { - throw e; + return parseWithParser(requireParser(!isSCSS), text); + } catch (_secondError) { + throw originalError; } } } diff --git a/src/parser.js b/src/parser.js index 486a6e28..57c0657a 100644 --- a/src/parser.js +++ b/src/parser.js @@ -19,7 +19,13 @@ const parsers = { get typescript() { return eval("require")("./parser-typescript"); }, - get postcss() { + get css() { + return eval("require")("./parser-postcss"); + }, + get less() { + return eval("require")("./parser-postcss"); + }, + get scss() { return eval("require")("./parser-postcss"); }, get json() { diff --git a/src/printer.js b/src/printer.js index 1006d8f5..c1a5653c 100644 --- a/src/printer.js +++ b/src/printer.js @@ -56,7 +56,9 @@ function getPrintFunction(options) { return require("./printer-graphql"); case "parse5": return require("./printer-htmlparser2"); - case "postcss": + case "css": + case "less": + case "scss": return require("./printer-postcss"); default: return genericPrintNoParens; diff --git a/src/util.js b/src/util.js index 473a92b8..f1313190 100644 --- a/src/util.js +++ b/src/util.js @@ -526,7 +526,15 @@ function printString(raw, options, isDirectiveLiteral) { // is enclosed with `enclosingQuote`, but it isn't. The string could contain // unnecessary escapes (such as in `"\'"`). Always using `makeString` makes // sure that we consistently output the minimum amount of escaped quotes. - return makeString(rawContent, enclosingQuote, options.parser !== "postcss"); + return makeString( + rawContent, + enclosingQuote, + !( + options.parser === "css" || + options.parser === "less" || + options.parser === "scss" + ) + ); } function makeString(rawContent, enclosingQuote, unescapeUnnecessaryEscapes) { diff --git a/tests/css_atrule/jsfmt.spec.js b/tests/css_atrule/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_atrule/jsfmt.spec.js +++ b/tests/css_atrule/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_attribute/jsfmt.spec.js b/tests/css_attribute/jsfmt.spec.js index b20d64e4..9cba4dbe 100644 --- a/tests/css_attribute/jsfmt.spec.js +++ b/tests/css_attribute/jsfmt.spec.js @@ -1,2 +1,2 @@ -run_spec(__dirname, { parser: "postcss" }); -run_spec(__dirname, { parser: "postcss", singleQuote: true }); +run_spec(__dirname, { parser: "css" }); +run_spec(__dirname, { parser: "css", singleQuote: true }); diff --git a/tests/css_atword/jsfmt.spec.js b/tests/css_atword/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_atword/jsfmt.spec.js +++ b/tests/css_atword/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_bom/jsfmt.spec.js b/tests/css_bom/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_bom/jsfmt.spec.js +++ b/tests/css_bom/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_case/jsfmt.spec.js b/tests/css_case/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_case/jsfmt.spec.js +++ b/tests/css_case/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_colon/jsfmt.spec.js b/tests/css_colon/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_colon/jsfmt.spec.js +++ b/tests/css_colon/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_color/jsfmt.spec.js b/tests/css_color/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_color/jsfmt.spec.js +++ b/tests/css_color/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_combinator/jsfmt.spec.js b/tests/css_combinator/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_combinator/jsfmt.spec.js +++ b/tests/css_combinator/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_comment_in_if/jsfmt.spec.js b/tests/css_comment_in_if/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_comment_in_if/jsfmt.spec.js +++ b/tests/css_comment_in_if/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_comments/jsfmt.spec.js b/tests/css_comments/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_comments/jsfmt.spec.js +++ b/tests/css_comments/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_composes/jsfmt.spec.js b/tests/css_composes/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_composes/jsfmt.spec.js +++ b/tests/css_composes/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_empty/jsfmt.spec.js b/tests/css_empty/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_empty/jsfmt.spec.js +++ b/tests/css_empty/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_extend/jsfmt.spec.js b/tests/css_extend/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_extend/jsfmt.spec.js +++ b/tests/css_extend/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_fill_value/jsfmt.spec.js b/tests/css_fill_value/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_fill_value/jsfmt.spec.js +++ b/tests/css_fill_value/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_import/jsfmt.spec.js b/tests/css_import/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_import/jsfmt.spec.js +++ b/tests/css_import/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_important/jsfmt.spec.js b/tests/css_important/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_important/jsfmt.spec.js +++ b/tests/css_important/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_indent/jsfmt.spec.js b/tests/css_indent/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_indent/jsfmt.spec.js +++ b/tests/css_indent/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_inline_url/jsfmt.spec.js b/tests/css_inline_url/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_inline_url/jsfmt.spec.js +++ b/tests/css_inline_url/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_long_rule/jsfmt.spec.js b/tests/css_long_rule/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_long_rule/jsfmt.spec.js +++ b/tests/css_long_rule/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_media/jsfmt.spec.js b/tests/css_media/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_media/jsfmt.spec.js +++ b/tests/css_media/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_numbers/jsfmt.spec.js b/tests/css_numbers/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_numbers/jsfmt.spec.js +++ b/tests/css_numbers/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_params/jsfmt.spec.js b/tests/css_params/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_params/jsfmt.spec.js +++ b/tests/css_params/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_parens/jsfmt.spec.js b/tests/css_parens/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_parens/jsfmt.spec.js +++ b/tests/css_parens/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_prefix/jsfmt.spec.js b/tests/css_prefix/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_prefix/jsfmt.spec.js +++ b/tests/css_prefix/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_pseudo_call/jsfmt.spec.js b/tests/css_pseudo_call/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_pseudo_call/jsfmt.spec.js +++ b/tests/css_pseudo_call/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_quotes/jsfmt.spec.js b/tests/css_quotes/jsfmt.spec.js index b20d64e4..9cba4dbe 100644 --- a/tests/css_quotes/jsfmt.spec.js +++ b/tests/css_quotes/jsfmt.spec.js @@ -1,2 +1,2 @@ -run_spec(__dirname, { parser: "postcss" }); -run_spec(__dirname, { parser: "postcss", singleQuote: true }); +run_spec(__dirname, { parser: "css" }); +run_spec(__dirname, { parser: "css", singleQuote: true }); diff --git a/tests/css_scss/jsfmt.spec.js b/tests/css_scss/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_scss/jsfmt.spec.js +++ b/tests/css_scss/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_selector_call/jsfmt.spec.js b/tests/css_selector_call/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_selector_call/jsfmt.spec.js +++ b/tests/css_selector_call/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_selector_list/jsfmt.spec.js b/tests/css_selector_list/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_selector_list/jsfmt.spec.js +++ b/tests/css_selector_list/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_selector_string/jsfmt.spec.js b/tests/css_selector_string/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_selector_string/jsfmt.spec.js +++ b/tests/css_selector_string/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/css_trailing_comma/jsfmt.spec.js b/tests/css_trailing_comma/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/css_trailing_comma/jsfmt.spec.js +++ b/tests/css_trailing_comma/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/range_css/jsfmt.spec.js b/tests/range_css/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/range_css/jsfmt.spec.js +++ b/tests/range_css/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/at-apply/jsfmt.spec.js b/tests/stylefmt/at-apply/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/at-apply/jsfmt.spec.js +++ b/tests/stylefmt/at-apply/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/at-media/jsfmt.spec.js b/tests/stylefmt/at-media/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/at-media/jsfmt.spec.js +++ b/tests/stylefmt/at-media/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/attr-selector/jsfmt.spec.js b/tests/stylefmt/attr-selector/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/attr-selector/jsfmt.spec.js +++ b/tests/stylefmt/attr-selector/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/charset-2/jsfmt.spec.js b/tests/stylefmt/charset-2/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/charset-2/jsfmt.spec.js +++ b/tests/stylefmt/charset-2/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/charset/jsfmt.spec.js b/tests/stylefmt/charset/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/charset/jsfmt.spec.js +++ b/tests/stylefmt/charset/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/color-hex-lowercase/jsfmt.spec.js b/tests/stylefmt/color-hex-lowercase/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/color-hex-lowercase/jsfmt.spec.js +++ b/tests/stylefmt/color-hex-lowercase/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/comment-in-rules/jsfmt.spec.js b/tests/stylefmt/comment-in-rules/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/comment-in-rules/jsfmt.spec.js +++ b/tests/stylefmt/comment-in-rules/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/comment/jsfmt.spec.js b/tests/stylefmt/comment/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/comment/jsfmt.spec.js +++ b/tests/stylefmt/comment/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/content/jsfmt.spec.js b/tests/stylefmt/content/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/content/jsfmt.spec.js +++ b/tests/stylefmt/content/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/cssnext-example/jsfmt.spec.js b/tests/stylefmt/cssnext-example/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/cssnext-example/jsfmt.spec.js +++ b/tests/stylefmt/cssnext-example/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/custom-media-queries/jsfmt.spec.js b/tests/stylefmt/custom-media-queries/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/custom-media-queries/jsfmt.spec.js +++ b/tests/stylefmt/custom-media-queries/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/custom-properties/jsfmt.spec.js b/tests/stylefmt/custom-properties/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/custom-properties/jsfmt.spec.js +++ b/tests/stylefmt/custom-properties/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/custom-selectors/jsfmt.spec.js b/tests/stylefmt/custom-selectors/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/custom-selectors/jsfmt.spec.js +++ b/tests/stylefmt/custom-selectors/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/data-url/jsfmt.spec.js b/tests/stylefmt/data-url/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/data-url/jsfmt.spec.js +++ b/tests/stylefmt/data-url/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/font-face/jsfmt.spec.js b/tests/stylefmt/font-face/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/font-face/jsfmt.spec.js +++ b/tests/stylefmt/font-face/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/font-shorthand/jsfmt.spec.js b/tests/stylefmt/font-shorthand/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/font-shorthand/jsfmt.spec.js +++ b/tests/stylefmt/font-shorthand/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/ie-hacks/jsfmt.spec.js b/tests/stylefmt/ie-hacks/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/ie-hacks/jsfmt.spec.js +++ b/tests/stylefmt/ie-hacks/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/import/jsfmt.spec.js b/tests/stylefmt/import/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/import/jsfmt.spec.js +++ b/tests/stylefmt/import/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/important/jsfmt.spec.js b/tests/stylefmt/important/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/important/jsfmt.spec.js +++ b/tests/stylefmt/important/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/inline-comment/jsfmt.spec.js b/tests/stylefmt/inline-comment/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/inline-comment/jsfmt.spec.js +++ b/tests/stylefmt/inline-comment/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/lowercase/jsfmt.spec.js b/tests/stylefmt/lowercase/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/lowercase/jsfmt.spec.js +++ b/tests/stylefmt/lowercase/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/media-indent-with-import/jsfmt.spec.js b/tests/stylefmt/media-indent-with-import/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/media-indent-with-import/jsfmt.spec.js +++ b/tests/stylefmt/media-indent-with-import/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/media-indent/jsfmt.spec.js b/tests/stylefmt/media-indent/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/media-indent/jsfmt.spec.js +++ b/tests/stylefmt/media-indent/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/media-queries-ranges/jsfmt.spec.js b/tests/stylefmt/media-queries-ranges/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/media-queries-ranges/jsfmt.spec.js +++ b/tests/stylefmt/media-queries-ranges/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/nested-2/jsfmt.spec.js b/tests/stylefmt/nested-2/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/nested-2/jsfmt.spec.js +++ b/tests/stylefmt/nested-2/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/nested-atrule/jsfmt.spec.js b/tests/stylefmt/nested-atrule/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/nested-atrule/jsfmt.spec.js +++ b/tests/stylefmt/nested-atrule/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/nested-indention-2/jsfmt.spec.js b/tests/stylefmt/nested-indention-2/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/nested-indention-2/jsfmt.spec.js +++ b/tests/stylefmt/nested-indention-2/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/nested-indention/jsfmt.spec.js b/tests/stylefmt/nested-indention/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/nested-indention/jsfmt.spec.js +++ b/tests/stylefmt/nested-indention/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/nested-mixin-2/jsfmt.spec.js b/tests/stylefmt/nested-mixin-2/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/nested-mixin-2/jsfmt.spec.js +++ b/tests/stylefmt/nested-mixin-2/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/nested-mixin/jsfmt.spec.js b/tests/stylefmt/nested-mixin/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/nested-mixin/jsfmt.spec.js +++ b/tests/stylefmt/nested-mixin/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/nested/jsfmt.spec.js b/tests/stylefmt/nested/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/nested/jsfmt.spec.js +++ b/tests/stylefmt/nested/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/non-nested-combinator/jsfmt.spec.js b/tests/stylefmt/non-nested-combinator/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/non-nested-combinator/jsfmt.spec.js +++ b/tests/stylefmt/non-nested-combinator/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/pseudo-element/jsfmt.spec.js b/tests/stylefmt/pseudo-element/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/pseudo-element/jsfmt.spec.js +++ b/tests/stylefmt/pseudo-element/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/readme/jsfmt.spec.js b/tests/stylefmt/readme/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/readme/jsfmt.spec.js +++ b/tests/stylefmt/readme/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/shorthand-with-sass-variables/jsfmt.spec.js b/tests/stylefmt/shorthand-with-sass-variables/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/shorthand-with-sass-variables/jsfmt.spec.js +++ b/tests/stylefmt/shorthand-with-sass-variables/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/values/jsfmt.spec.js b/tests/stylefmt/values/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/values/jsfmt.spec.js +++ b/tests/stylefmt/values/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/var-notation/jsfmt.spec.js b/tests/stylefmt/var-notation/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/var-notation/jsfmt.spec.js +++ b/tests/stylefmt/var-notation/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests/stylefmt/vendor-prefix/jsfmt.spec.js b/tests/stylefmt/vendor-prefix/jsfmt.spec.js index a7d303b6..5f2741d5 100644 --- a/tests/stylefmt/vendor-prefix/jsfmt.spec.js +++ b/tests/stylefmt/vendor-prefix/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, { parser: "postcss" }); +run_spec(__dirname, { parser: "css" }); diff --git a/tests_integration/__tests__/__snapshots__/early-exit.js.snap b/tests_integration/__tests__/__snapshots__/early-exit.js.snap index 7bb98d2c..57550074 100644 --- a/tests_integration/__tests__/__snapshots__/early-exit.js.snap +++ b/tests_integration/__tests__/__snapshots__/early-exit.js.snap @@ -127,7 +127,7 @@ exports[`show detailed usage with --help no-semi 1`] = ` `; exports[`show detailed usage with --help parser 1`] = ` -"--parser +"--parser Which parser to use. @@ -136,7 +136,9 @@ Valid options: flow babylon typescript - postcss + css + less + scss json graphql @@ -287,7 +289,7 @@ Format options: --no-bracket-spacing Do not print spaces between brackets. --jsx-bracket-same-line Put > on the last line instead of at a new line. Defaults to false. - --parser + --parser Which parser to use. Defaults to babylon. --print-width The line length where Prettier will try wrap. @@ -347,7 +349,7 @@ Other options: `; exports[`show warning with --help not-found (typo) 1`] = ` -"--parser +"--parser Which parser to use. @@ -356,7 +358,9 @@ Valid options: flow babylon typescript - postcss + css + less + scss json graphql @@ -400,7 +404,7 @@ Format options: --no-bracket-spacing Do not print spaces between brackets. --jsx-bracket-same-line Put > on the last line instead of at a new line. Defaults to false. - --parser + --parser Which parser to use. Defaults to babylon. --print-width The line length where Prettier will try wrap. diff --git a/website/pages/playground/index.html b/website/pages/playground/index.html index d53a9872..87945b19 100644 --- a/website/pages/playground/index.html +++ b/website/pages/playground/index.html @@ -359,7 +359,7 @@
- + diff --git a/website/static/markdown.js b/website/static/markdown.js index 4eedfb17..9f2746c6 100644 --- a/website/static/markdown.js +++ b/website/static/markdown.js @@ -49,8 +49,9 @@ return "jsx"; case "typescript": return "tsx"; + // TODO: Remove the "postcss" case when prettier@>1.7.0 is released. case "postcss": - return "scss"; + return "css"; default: return options.parser; } diff --git a/website/static/playground.js b/website/static/playground.js index 9f53dd22..1cc88cd7 100644 --- a/website/static/playground.js +++ b/website/static/playground.js @@ -238,7 +238,11 @@ function replaceHash(hash) { function getCodemirrorMode(options) { switch (options.parser) { + // TODO: Remove the "postcss" case when prettier@>1.7.0 is released. + case "css": case "postcss": + case "less": + case "scss": return "css"; default: return "jsx"; diff --git a/website/static/worker.js b/website/static/worker.js index d83b6808..d613c23c 100644 --- a/website/static/worker.js +++ b/website/static/worker.js @@ -98,11 +98,20 @@ function formatCode(text, options) { } function lazyLoadParser(parser) { - var script = - parser === "json" ? "parser-babylon.js" : "parser-" + parser + ".js"; + var actualParser = + parser === "json" + ? "babylon" + : parser === "css" || + // TODO: Remove "postcss" when prettier@>1.7.0 is released. + parser === "postcss" || + parser === "less" || + parser === "scss" + ? "css" + : parser; + var script = "parser-" + actualParser + ".js"; - if (!parsersLoaded[parser]) { + if (!parsersLoaded[actualParser]) { importScripts("lib/" + script); - parsersLoaded[parser] = true; + parsersLoaded[actualParser] = true; } }