Skip to content

Commit 11ec1bc

Browse files
authored
Adds basic support for .yamlrc.yml (yarnPath only, v2) (#7350)
1 parent 3a1fc9c commit 11ec1bc

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

src/rc.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,11 @@ export function getRcConfigForCwd(cwd: string, args: Array<string>): {[key: stri
4343
}
4444

4545
function loadRcFile(fileText: string, filePath: string): {[key: string]: string} {
46-
const {object: values} = parse(fileText, 'yarnrc');
46+
let {object: values} = parse(fileText, 'yarnrc');
47+
48+
if (filePath.match(/\.yml$/)) {
49+
values = {yarnPath: values.yarnPath};
50+
}
4751

4852
// some keys reference directories so keep their relativity
4953
for (const key in values) {

src/util/rc.js

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,36 @@ const home = isWin ? process.env.USERPROFILE : process.env.HOME;
1111
function getRcPaths(name: string, cwd: string): Array<string> {
1212
const configPaths = [];
1313

14-
function addConfigPath(...segments) {
14+
function pushConfigPath(...segments) {
1515
configPaths.push(path.join(...segments));
16+
if (segments[segments.length - 1] === `.${name}rc`) {
17+
configPaths.push(path.join(...segments.slice(0, -1), `.${name}rc.yml`));
18+
}
19+
}
20+
21+
function unshiftConfigPath(...segments) {
22+
configPaths.unshift(path.join(...segments));
23+
if (segments[segments.length - 1] === `.${name}rc`) {
24+
configPaths.unshift(path.join(...segments.slice(0, -1), `.${name}rc.yml`));
25+
}
1626
}
1727

1828
if (!isWin) {
19-
addConfigPath(etc, name, 'config');
20-
addConfigPath(etc, `${name}rc`);
29+
pushConfigPath(etc, name, 'config');
30+
pushConfigPath(etc, `${name}rc`);
2131
}
2232

2333
if (home) {
24-
addConfigPath(CONFIG_DIRECTORY);
25-
addConfigPath(home, '.config', name, 'config');
26-
addConfigPath(home, '.config', name);
27-
addConfigPath(home, `.${name}`, 'config');
28-
addConfigPath(home, `.${name}rc`);
34+
pushConfigPath(CONFIG_DIRECTORY);
35+
pushConfigPath(home, '.config', name, 'config');
36+
pushConfigPath(home, '.config', name);
37+
pushConfigPath(home, `.${name}`, 'config');
38+
pushConfigPath(home, `.${name}rc`);
2939
}
3040

3141
// add .yarnrc locations relative to the cwd
3242
while (true) {
33-
configPaths.unshift(path.join(cwd, `.${name}rc`));
43+
unshiftConfigPath(cwd, `.${name}rc`);
3444

3545
const upperCwd = path.dirname(cwd);
3646
if (upperCwd === cwd) {
@@ -45,7 +55,7 @@ function getRcPaths(name: string, cwd: string): Array<string> {
4555
const envVariable = `${name}_config`.toUpperCase();
4656

4757
if (process.env[envVariable]) {
48-
addConfigPath(process.env[envVariable]);
58+
pushConfigPath(process.env[envVariable]);
4959
}
5060

5161
return configPaths;

0 commit comments

Comments
 (0)