From 1863d9e3197db48a549fa34276171f105ed1cd7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Fri, 19 Apr 2019 17:17:50 +0100 Subject: [PATCH] Tweaks the yarnrc syntax parser --- src/cli/index.js | 2 +- src/lockfile/parse.js | 23 +++++++++++------------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/cli/index.js b/src/cli/index.js index bcc70f15c7..ccf7f1b952 100644 --- a/src/cli/index.js +++ b/src/cli/index.js @@ -597,7 +597,7 @@ export async function main({ async function start(): Promise { const rc = getRcConfigForCwd(process.cwd(), process.argv.slice(2)); - const yarnPath = rc['yarn-path']; + const yarnPath = rc['yarn-path'] || rc['yarnPath']; if (yarnPath && !boolifyWithDefault(process.env.YARN_IGNORE_PATH, false)) { const argv = process.argv.slice(2); diff --git a/src/lockfile/parse.js b/src/lockfile/parse.js index 2348746063..0549296639 100644 --- a/src/lockfile/parse.js +++ b/src/lockfile/parse.js @@ -133,7 +133,7 @@ function* tokenise(input: string): Iterator { } else if (input[0] === ',') { yield buildToken(TOKEN_TYPES.comma); chop++; - } else if (/^[a-zA-Z\/-]/g.test(input)) { + } else if (/^[a-zA-Z\/.-]/g.test(input)) { let i = 0; for (; i < input.length; i++) { const char = input[i]; @@ -286,12 +286,18 @@ class Parser { this.next(); } - const valToken = this.token; - - if (valToken.type === TOKEN_TYPES.colon) { - // object + const wasColon = this.token.type === TOKEN_TYPES.colon; + if (wasColon) this.next(); + if (isValidPropValueToken(this.token)) { + // plain value + for (const key of keys) { + obj[key] = this.token.value; + } + + this.next(); + } else if (wasColon) { // parse object const val = this.parse(indent + 1); @@ -302,13 +308,6 @@ class Parser { if (indent && this.token.type !== TOKEN_TYPES.indent) { break; } - } else if (isValidPropValueToken(valToken)) { - // plain value - for (const key of keys) { - obj[key] = valToken.value; - } - - this.next(); } else { this.unexpected('Invalid value type'); }