Split Less and SCSS parsing into different parsers (#2844)
* Split Less and SCSS parsing into different parsers Now, .less files are always parsed with postcss-less, and .scss files areare always parsed with postcss-scss. This: - Is less hacky. - Is meant to avoid issues like #2829. - Is probably more performant. `parser: "postcss"` and `--parser postcss` continue to work like before: First trying postcss-less, and if that fails, postcss-scss, unless a regex says that we should try in the opposite order. The new values for the parser option are "postcss-less" and "postcss-scss". * Remove postcss from package.json since it is not used * Rename parser-less to less and parser-scss to scss * Deprecate parser:postcss in favor of parser:css * Fix CSS testsmaster
parent
70f5165bb1
commit
c6bac7cfe6
|
@ -34,7 +34,6 @@
|
||||||
"minimatch": "3.0.4",
|
"minimatch": "3.0.4",
|
||||||
"minimist": "1.2.0",
|
"minimist": "1.2.0",
|
||||||
"parse5": "3.0.2",
|
"parse5": "3.0.2",
|
||||||
"postcss": "^6.0.1",
|
|
||||||
"postcss-less": "^1.0.0",
|
"postcss-less": "^1.0.0",
|
||||||
"postcss-media-query-parser": "0.2.3",
|
"postcss-media-query-parser": "0.2.3",
|
||||||
"postcss-scss": "1.0.0",
|
"postcss-scss": "1.0.0",
|
||||||
|
|
|
@ -185,7 +185,17 @@ const detailedOptions = normalizeDetailedOptions({
|
||||||
category: CATEGORY_FORMAT,
|
category: CATEGORY_FORMAT,
|
||||||
forwardToApi: true,
|
forwardToApi: true,
|
||||||
exception: value => typeof value === "string", // Allow path to a parser module.
|
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.",
|
description: "Which parser to use.",
|
||||||
getter: (value, argv) => (argv["flow-parser"] ? "flow" : value)
|
getter: (value, argv) => (argv["flow-parser"] ? "flow" : value)
|
||||||
},
|
},
|
||||||
|
|
|
@ -48,7 +48,7 @@ function fromBabylonFlowOrTypeScript(path) {
|
||||||
const rawQuasis = node.quasis.map(q => q.value.raw);
|
const rawQuasis = node.quasis.map(q => q.value.raw);
|
||||||
const text = rawQuasis.join("@prettier-placeholder");
|
const text = rawQuasis.join("@prettier-placeholder");
|
||||||
return {
|
return {
|
||||||
options: { parser: "postcss" },
|
options: { parser: "css" },
|
||||||
transformDoc: transformCssDoc,
|
transformDoc: transformCssDoc,
|
||||||
text: text
|
text: text
|
||||||
};
|
};
|
||||||
|
@ -133,7 +133,7 @@ function fromHtmlParser2(path, options) {
|
||||||
// Inline Styles
|
// Inline Styles
|
||||||
if (parent.type === "style") {
|
if (parent.type === "style") {
|
||||||
return {
|
return {
|
||||||
options: { parser: "postcss" },
|
options: { parser: "css" },
|
||||||
transformDoc: doc => concat([hardline, stripTrailingHardline(doc)]),
|
transformDoc: doc => concat([hardline, stripTrailingHardline(doc)]),
|
||||||
text: getText(options, node)
|
text: getText(options, node)
|
||||||
};
|
};
|
||||||
|
|
|
@ -30,8 +30,12 @@ function normalize(options) {
|
||||||
const normalized = Object.assign({}, options || {});
|
const normalized = Object.assign({}, options || {});
|
||||||
const filepath = normalized.filepath;
|
const filepath = normalized.filepath;
|
||||||
|
|
||||||
if (/\.(css|less|scss)$/.test(filepath)) {
|
if (/\.css$/.test(filepath)) {
|
||||||
normalized.parser = "postcss";
|
normalized.parser = "css";
|
||||||
|
} else if (/\.less$/.test(filepath)) {
|
||||||
|
normalized.parser = "less";
|
||||||
|
} else if (/\.scss$/.test(filepath)) {
|
||||||
|
normalized.parser = "scss";
|
||||||
} else if (/\.html$/.test(filepath)) {
|
} else if (/\.html$/.test(filepath)) {
|
||||||
normalized.parser = "parse5";
|
normalized.parser = "parse5";
|
||||||
} else if (/\.(ts|tsx)$/.test(filepath)) {
|
} 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;
|
const parserBackup = normalized.parser;
|
||||||
if (typeof normalized.parser === "function") {
|
if (typeof normalized.parser === "function") {
|
||||||
// Delete the function from the object to pass validation.
|
// Delete the function from the object to pass validation.
|
||||||
|
|
|
@ -227,15 +227,27 @@ function requireParser(isSCSS) {
|
||||||
return require("postcss-less");
|
return require("postcss-less");
|
||||||
}
|
}
|
||||||
|
|
||||||
function parse(text /*, parsers, opts*/) {
|
const IS_POSSIBLY_SCSS = /(\w\s*: [^}:]+|#){|@import[^\n]+(url|,)/;
|
||||||
const isLikelySCSS = !!text.match(/(\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 {
|
try {
|
||||||
return parseWithParser(requireParser(isLikelySCSS), text);
|
return parseWithParser(requireParser(isSCSS), text);
|
||||||
} catch (e) {
|
} catch (originalError) {
|
||||||
|
if (hasExplicitParserChoice) {
|
||||||
|
throw originalError;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return parseWithParser(requireParser(!isLikelySCSS), text);
|
return parseWithParser(requireParser(!isSCSS), text);
|
||||||
} catch (e2) {
|
} catch (_secondError) {
|
||||||
throw e;
|
throw originalError;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,13 @@ const parsers = {
|
||||||
get typescript() {
|
get typescript() {
|
||||||
return eval("require")("./parser-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");
|
return eval("require")("./parser-postcss");
|
||||||
},
|
},
|
||||||
get json() {
|
get json() {
|
||||||
|
|
|
@ -56,7 +56,9 @@ function getPrintFunction(options) {
|
||||||
return require("./printer-graphql");
|
return require("./printer-graphql");
|
||||||
case "parse5":
|
case "parse5":
|
||||||
return require("./printer-htmlparser2");
|
return require("./printer-htmlparser2");
|
||||||
case "postcss":
|
case "css":
|
||||||
|
case "less":
|
||||||
|
case "scss":
|
||||||
return require("./printer-postcss");
|
return require("./printer-postcss");
|
||||||
default:
|
default:
|
||||||
return genericPrintNoParens;
|
return genericPrintNoParens;
|
||||||
|
|
10
src/util.js
10
src/util.js
|
@ -526,7 +526,15 @@ function printString(raw, options, isDirectiveLiteral) {
|
||||||
// is enclosed with `enclosingQuote`, but it isn't. The string could contain
|
// is enclosed with `enclosingQuote`, but it isn't. The string could contain
|
||||||
// unnecessary escapes (such as in `"\'"`). Always using `makeString` makes
|
// unnecessary escapes (such as in `"\'"`). Always using `makeString` makes
|
||||||
// sure that we consistently output the minimum amount of escaped quotes.
|
// 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) {
|
function makeString(rawContent, enclosingQuote, unescapeUnnecessaryEscapes) {
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
run_spec(__dirname, { parser: "postcss", singleQuote: true });
|
run_spec(__dirname, { parser: "css", singleQuote: true });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
run_spec(__dirname, { parser: "postcss", singleQuote: true });
|
run_spec(__dirname, { parser: "css", singleQuote: true });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
run_spec(__dirname, { parser: "postcss" });
|
run_spec(__dirname, { parser: "css" });
|
||||||
|
|
|
@ -127,7 +127,7 @@ exports[`show detailed usage with --help no-semi 1`] = `
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`show detailed usage with --help parser 1`] = `
|
exports[`show detailed usage with --help parser 1`] = `
|
||||||
"--parser <flow|babylon|typescript|postcss|json|graphql>
|
"--parser <flow|babylon|typescript|css|less|scss|json|graphql>
|
||||||
|
|
||||||
Which parser to use.
|
Which parser to use.
|
||||||
|
|
||||||
|
@ -136,7 +136,9 @@ Valid options:
|
||||||
flow
|
flow
|
||||||
babylon
|
babylon
|
||||||
typescript
|
typescript
|
||||||
postcss
|
css
|
||||||
|
less
|
||||||
|
scss
|
||||||
json
|
json
|
||||||
graphql
|
graphql
|
||||||
|
|
||||||
|
@ -287,7 +289,7 @@ Format options:
|
||||||
--no-bracket-spacing Do not print spaces between brackets.
|
--no-bracket-spacing Do not print spaces between brackets.
|
||||||
--jsx-bracket-same-line Put > on the last line instead of at a new line.
|
--jsx-bracket-same-line Put > on the last line instead of at a new line.
|
||||||
Defaults to false.
|
Defaults to false.
|
||||||
--parser <flow|babylon|typescript|postcss|json|graphql>
|
--parser <flow|babylon|typescript|css|less|scss|json|graphql>
|
||||||
Which parser to use.
|
Which parser to use.
|
||||||
Defaults to babylon.
|
Defaults to babylon.
|
||||||
--print-width <int> The line length where Prettier will try wrap.
|
--print-width <int> The line length where Prettier will try wrap.
|
||||||
|
@ -347,7 +349,7 @@ Other options:
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`show warning with --help not-found (typo) 1`] = `
|
exports[`show warning with --help not-found (typo) 1`] = `
|
||||||
"--parser <flow|babylon|typescript|postcss|json|graphql>
|
"--parser <flow|babylon|typescript|css|less|scss|json|graphql>
|
||||||
|
|
||||||
Which parser to use.
|
Which parser to use.
|
||||||
|
|
||||||
|
@ -356,7 +358,9 @@ Valid options:
|
||||||
flow
|
flow
|
||||||
babylon
|
babylon
|
||||||
typescript
|
typescript
|
||||||
postcss
|
css
|
||||||
|
less
|
||||||
|
scss
|
||||||
json
|
json
|
||||||
graphql
|
graphql
|
||||||
|
|
||||||
|
@ -400,7 +404,7 @@ Format options:
|
||||||
--no-bracket-spacing Do not print spaces between brackets.
|
--no-bracket-spacing Do not print spaces between brackets.
|
||||||
--jsx-bracket-same-line Put > on the last line instead of at a new line.
|
--jsx-bracket-same-line Put > on the last line instead of at a new line.
|
||||||
Defaults to false.
|
Defaults to false.
|
||||||
--parser <flow|babylon|typescript|postcss|json|graphql>
|
--parser <flow|babylon|typescript|css|less|scss|json|graphql>
|
||||||
Which parser to use.
|
Which parser to use.
|
||||||
Defaults to babylon.
|
Defaults to babylon.
|
||||||
--print-width <int> The line length where Prettier will try wrap.
|
--print-width <int> The line length where Prettier will try wrap.
|
||||||
|
|
|
@ -359,7 +359,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="options last">
|
<div class="options last">
|
||||||
<label>--trailing-comma <select id="trailingComma"><option value="none">none</option><option value="es5">es5</option><option value="all">all</option></select></label>
|
<label>--trailing-comma <select id="trailingComma"><option value="none">none</option><option value="es5">es5</option><option value="all">all</option></select></label>
|
||||||
<label>--parser <select id="parser"><option value="babylon">babylon</option><option value="flow">flow</option><option value="typescript">typescript</option><option value="postcss">postcss</option><option value="json">json</option><option value="graphql">graphql</option></select></label>
|
<label>--parser <select id="parser"><option value="babylon">babylon</option><option value="flow">flow</option><option value="typescript">typescript</option><option value="postcss">postcss</option><!-- TODO: Enable these and remove the "postcss" option when prettier@>1.7.0 has been released. <option value="css">css</option><option value="less">less</option><option value="scss">scss</option>--><option value="json">json</option><option value="graphql">graphql</option></select></label>
|
||||||
<span style="flex: 0.3"></span>
|
<span style="flex: 0.3"></span>
|
||||||
<label><input type="checkbox" id="ast"> show AST (debug)</label>
|
<label><input type="checkbox" id="ast"> show AST (debug)</label>
|
||||||
<label><input type="checkbox" id="doc"> show doc (debug)</label>
|
<label><input type="checkbox" id="doc"> show doc (debug)</label>
|
||||||
|
|
|
@ -49,8 +49,9 @@
|
||||||
return "jsx";
|
return "jsx";
|
||||||
case "typescript":
|
case "typescript":
|
||||||
return "tsx";
|
return "tsx";
|
||||||
|
// TODO: Remove the "postcss" case when prettier@>1.7.0 is released.
|
||||||
case "postcss":
|
case "postcss":
|
||||||
return "scss";
|
return "css";
|
||||||
default:
|
default:
|
||||||
return options.parser;
|
return options.parser;
|
||||||
}
|
}
|
||||||
|
|
|
@ -238,7 +238,11 @@ function replaceHash(hash) {
|
||||||
|
|
||||||
function getCodemirrorMode(options) {
|
function getCodemirrorMode(options) {
|
||||||
switch (options.parser) {
|
switch (options.parser) {
|
||||||
|
// TODO: Remove the "postcss" case when prettier@>1.7.0 is released.
|
||||||
|
case "css":
|
||||||
case "postcss":
|
case "postcss":
|
||||||
|
case "less":
|
||||||
|
case "scss":
|
||||||
return "css";
|
return "css";
|
||||||
default:
|
default:
|
||||||
return "jsx";
|
return "jsx";
|
||||||
|
|
|
@ -98,11 +98,20 @@ function formatCode(text, options) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function lazyLoadParser(parser) {
|
function lazyLoadParser(parser) {
|
||||||
var script =
|
var actualParser =
|
||||||
parser === "json" ? "parser-babylon.js" : "parser-" + parser + ".js";
|
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);
|
importScripts("lib/" + script);
|
||||||
parsersLoaded[parser] = true;
|
parsersLoaded[actualParser] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue