Skip to content

Commit 2956bf9

Browse files
committed
fix: use lerna to collect versions for loopback modules
1 parent 0a742d7 commit 2956bf9

File tree

4 files changed

+93
-66
lines changed

4 files changed

+93
-66
lines changed

bin/update-template-deps.js

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#!/usr/bin/env node
2+
// Copyright IBM Corp. 2017,2018. All Rights Reserved.
3+
// Node module: @loopback/cli
4+
// This file is licensed under the MIT License.
5+
// License text available at https://opensource.org/licenses/MIT
6+
7+
/**
8+
* This is an internal script to update module dependencies for CLI code
9+
* generation templates of package.json.
10+
*/
11+
'use strict';
12+
13+
const path = require('path');
14+
const fs = require('fs');
15+
const lerna = require('lerna');
16+
const ls = new lerna.LsCommand(null, {json: true, loglevel: 'silent'});
17+
18+
// We don't have to run the command as the preparations will collect packages
19+
ls.configureLogging();
20+
ls.runValidations();
21+
ls.runPreparations();
22+
23+
const pkgs = ls.filteredPackages.filter(pkg => !pkg.isPrivate()).map(pkg => ({
24+
name: pkg.name,
25+
version: pkg.version,
26+
}));
27+
28+
const lbModules = {};
29+
for (const p of pkgs) {
30+
lbModules[p.name] = '^' + p.version;
31+
}
32+
33+
const rootPath = ls.repository.rootPath;
34+
35+
// Load dependencies from `packages/build/package.json`
36+
const buildDeps = require(path.join(rootPath, 'packages/build/package.json'))
37+
.dependencies;
38+
39+
// Load dependencies from `packages/cli/lib/dependencies.json`
40+
const dependenciesFile = path.join(
41+
rootPath,
42+
'packages/cli/lib/dependencies.json',
43+
);
44+
45+
// Loading existing dependencies from `packages/cli/lib/dependencies.json`
46+
let currentDeps = {};
47+
try {
48+
currentDeps = require(dependenciesFile);
49+
} catch (e) {
50+
// Ignore error
51+
}
52+
53+
// Merge all entries
54+
const deps = Object.assign({}, currentDeps, buildDeps, lbModules);
55+
56+
// Convert to JSON
57+
const json = JSON.stringify(deps, null, 2);
58+
59+
if (process.argv[2] === '-f') {
60+
// Using `-f` to overwrite packages/cli/lib/dependencies.json
61+
fs.writeFileSync(dependenciesFile, json + '\n', {encoding: 'utf-8'});
62+
console.log('%s has been updated.', dependenciesFile);
63+
} else {
64+
// Otherwise write to console
65+
console.log(json);
66+
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"scripts": {
2323
"bootstrap": "npm i && lerna bootstrap",
2424
"release": "npm run build:full && lerna publish",
25+
"update-template-deps": "node bin/update-template-deps -f",
2526
"coverage:ci": "node packages/build/bin/run-nyc report --reporter=text-lcov | coveralls",
2627
"precoverage": "npm test",
2728
"coverage": "open coverage/index.html",

packages/cli/bin/_update-template-deps.js

Lines changed: 0 additions & 54 deletions
This file was deleted.

packages/cli/lib/dependencies.json

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,31 @@
11
{
22
"//1": "This file contains dependency/version used by project templates",
3-
"//2": "It can be updated by running `node bin/_update-template-deps.js >lib/dependencies.json`",
4-
"@loopback/context": "",
5-
"@loopback/boot": "",
6-
"@loopback/core": "",
7-
"@loopback/rest": "",
8-
"@loopback/openapi-v2": "",
9-
"@loopback/build": "",
10-
"@loopback/testlab": "",
11-
"@types/mocha": "^2.2.48",
12-
"mocha": "^5.0.1",
3+
"//2": "It can be updated by `npm run update-template-deps` under `loopback-next`",
4+
"@loopback/context": "^0.2.0",
5+
"@loopback/boot": "^0.2.0",
6+
"@loopback/core": "^0.2.0",
7+
"@loopback/rest": "^0.2.0",
8+
"@loopback/openapi-v2": "^0.2.0",
9+
"@loopback/build": "^0.2.0",
10+
"@loopback/testlab": "^0.2.0",
11+
"@types/mocha": "^2.2.43",
12+
"mocha": "^5.0.0",
1313
"source-map-support": "^0.5.3",
14-
"prettier": "^1.11.1",
14+
"prettier": "^1.10.2",
1515
"tslint": "^5.9.1",
16-
"typescript": "^2.7.2"
16+
"typescript": "^2.6.2",
17+
"@types/node": "^8.5.8",
18+
"cross-spawn": "^6.0.3",
19+
"debug": "^3.1.0",
20+
"nyc": "^11.4.1",
21+
"strong-docs": "^1.7.1",
22+
"@loopback/authentication": "^0.2.0",
23+
"@loopback/cli": "^0.2.0",
24+
"@loopback/metadata": "^0.2.0",
25+
"@loopback/openapi-spec-builder": "^0.2.0",
26+
"@loopback/openapi-spec": "^0.2.0",
27+
"@loopback/openapi-v3-types": "^0.2.0",
28+
"@loopback/openapi-v3": "^0.2.0",
29+
"@loopback/repository-json-schema": "^0.2.0",
30+
"@loopback/repository": "^0.2.0"
1731
}

0 commit comments

Comments
 (0)