Skip to content

Commit 0b52ddf

Browse files
committed
fix: support lerna 2, 3 simultaneously
1 parent f3ac22a commit 0b52ddf

File tree

12 files changed

+52
-33
lines changed

12 files changed

+52
-33
lines changed

@commitlint/config-lerna-scopes/fixtures/basic/lerna.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"lerna": "3.0.0",
2+
"lerna": "3.2.1",
33
"version": "1.0.0",
44
"packages": [
55
"packages/*"

@commitlint/config-lerna-scopes/fixtures/basic/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
"name": "basic",
33
"version": "1.0.0",
44
"devDependencies": {
5-
"lerna": "3.0.4"
5+
"lerna": "3.2.1"
66
}
77
}

@commitlint/config-lerna-scopes/fixtures/empty/lerna.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"lerna": "3.0.0",
2+
"lerna": "3.2.1",
33
"version": "1.0.0",
44
"packages": [
55
"packages/*"

@commitlint/config-lerna-scopes/fixtures/empty/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
"name": "empty",
33
"version": "1.0.0",
44
"devDependencies": {
5-
"lerna": "3.0.4"
5+
"lerna": "3.2.1"
66
}
77
}

@commitlint/config-lerna-scopes/fixtures/version-mismatch/package.json renamed to @commitlint/config-lerna-scopes/fixtures/lerna-two/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
"name": "version-mismatch",
33
"version": "1.0.0",
44
"devDependencies": {
5-
"lerna": "3.0.4"
5+
"lerna": "2.4.0"
66
}
77
}

@commitlint/config-lerna-scopes/fixtures/scoped/lerna.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"lerna": "3.0.0",
2+
"lerna": "3.2.1",
33
"version": "1.0.0",
44
"packages": [
55
"@packages/*"

@commitlint/config-lerna-scopes/fixtures/scoped/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
"name": "scoped",
33
"version": "1.0.0",
44
"devDependencies": {
5-
"lerna": "3.0.4"
5+
"lerna": "3.2.1"
66
}
77
}
+30-10
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
const Path = require('path');
12
const importFrom = require('import-from');
3+
const resolvePkg = require('resolve-pkg');
4+
const semver = require('semver');
25

36
module.exports = {
47
utils: {getPackages},
@@ -7,16 +10,33 @@ module.exports = {
710
}
811
};
912

10-
async function getPackages(context) {
11-
const ctx = context || {};
12-
const cwd = ctx.cwd || process.cwd();
13+
function getPackages(context) {
14+
return Promise.resolve()
15+
.then(() => {
16+
const ctx = context || {};
17+
const cwd = ctx.cwd || process.cwd();
18+
const lernaDirectory = resolvePkg('lerna', {cwd});
19+
const lernaVersion = require(Path.join(lernaDirectory, 'package.json'))
20+
.version;
1321

14-
const Project = importFrom(cwd, '@lerna/project');
22+
if (semver.lt(lernaVersion, '3.0.0')) {
23+
const Repository = importFrom(cwd, 'lerna/lib/Repository');
24+
const PackageUtilities = importFrom(cwd, 'lerna/lib/PackageUtilities');
1525

16-
const project = new Project(cwd);
17-
const packages = await project.getPackages();
18-
19-
return packages
20-
.map(pkg => pkg.name)
21-
.map(name => (name.charAt(0) === '@' ? name.split('/')[1] : name));
26+
const repository = new Repository(cwd);
27+
return PackageUtilities.getPackages({
28+
packageConfigs: repository.packageConfigs,
29+
rootPath: cwd
30+
});
31+
}
32+
const Project = importFrom(cwd, '@lerna/project');
33+
const project = new Project(cwd);
34+
return project.getPackages();
35+
36+
})
37+
.then(packages => {
38+
return packages
39+
.map(pkg => pkg.name)
40+
.map(name => (name.charAt(0) === '@' ? name.split('/')[1] : name));
41+
});
2242
}

@commitlint/config-lerna-scopes/package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,14 @@
4343
"lerna": "^3.0.0"
4444
},
4545
"dependencies": {
46-
"import-from": "2.1.0"
46+
"import-from": "2.1.0",
47+
"resolve-pkg": "^1.0.0",
48+
"semver": "^5.5.1"
4749
},
4850
"devDependencies": {
4951
"@commitlint/test": "^7.0.0",
5052
"@commitlint/utils": "^7.0.0",
53+
"@lerna/project": "^3.0.0",
5154
"ava": "0.22.0",
5255
"lerna": "3.1.1",
5356
"xo": "0.20.3"

@commitlint/config-lerna-scopes/test.js

+6-14
Original file line numberDiff line numberDiff line change
@@ -55,23 +55,15 @@ test('returns expected value for basic lerna repository', async t => {
5555
t.deepEqual(value, ['a', 'b']);
5656
});
5757

58-
test.failing(
59-
'throws for repository with .lerna vs .devDependencies.lerna mismatch',
60-
async t => {
61-
const {'scope-enum': fn} = config.rules;
62-
const cwd = await npm.bootstrap('fixtures/version-mismatch');
63-
try {
64-
await fn({cwd});
65-
t.fail();
66-
} catch (err) {
67-
t.pass();
68-
}
69-
}
70-
);
71-
7258
test('returns expected value for scoped lerna repository', async t => {
7359
const {'scope-enum': fn} = config.rules;
7460
const cwd = await npm.bootstrap('fixtures/scoped');
7561
const [, , value] = await fn({cwd});
7662
t.deepEqual(value, ['a', 'b']);
7763
});
64+
65+
test('works with lerna version < 3', async t => {
66+
const {'scope-enum': fn} = config.rules;
67+
const cwd = await npm.bootstrap('fixtures/lerna-two');
68+
await t.notThrows(async () => fn({cwd}));
69+
});

yarn.lock

+5-1
Original file line numberDiff line numberDiff line change
@@ -7443,7 +7443,7 @@ resolve-pathname@^2.1.0:
74437443
version "2.2.0"
74447444
resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879"
74457445

7446-
7446+
[email protected], resolve-pkg@^1.0.0:
74477447
version "1.0.0"
74487448
resolved "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-1.0.0.tgz#e19a15e78aca2e124461dc92b2e3943ef93494d9"
74497449
dependencies:
@@ -7595,6 +7595,10 @@ [email protected], semver@^5.5.0:
75957595
version "5.5.0"
75967596
resolved "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
75977597

7598+
semver@^5.5.1:
7599+
version "5.5.1"
7600+
resolved "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477"
7601+
75987602
semver@~5.3.0:
75997603
version "5.3.0"
76007604
resolved "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"

0 commit comments

Comments
 (0)