Skip to content

Commit a79b7f6

Browse files
committed
feat: add support for Node.js >= 12.20.0
As older npm versions doesn't support new package.json override field, we're simulating it for older npm versions before the npm package publish phase.
1 parent 47b3f0a commit a79b7f6

2 files changed

Lines changed: 36 additions & 1 deletion

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"deps_check_dir": ".deps_check"
3939
},
4040
"scripts": {
41-
"prepublishOnly": "npm run clean && npm run lint && npm run test && npm run build",
41+
"prepublishOnly": "npm run clean && npm run lint && npm run test && npm run build && node ./scripts/overrides.js",
4242
"build": "run-s build:umd:browser build:commonjs build:es",
4343
"build:umd:browser": "cross-env BABEL_ENV=browser webpack --progress --config config/webpack/browser.config.babel.js",
4444
"build:commonjs": "cross-env BABEL_ENV=commonjs babel src --out-dir lib",

scripts/overrides.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* This script simulates `overrides` package.json field
3+
* in older npm versions that doesn't support it.
4+
*
5+
* Older versions of npm match the package overrides by name and version,
6+
* instead of just name (this is how new `override` package.json field works).
7+
*/
8+
/* eslint-disable import/no-dynamic-require */
9+
10+
const fs = require('fs');
11+
const path = require('path');
12+
13+
const rootPckg = require(path.join(__dirname, '..', 'package.json'));
14+
const apidomReferencePckgPath = path.join(
15+
__dirname,
16+
'..',
17+
'node_modules',
18+
'@swagger-api',
19+
'apidom-reference',
20+
'package.json'
21+
);
22+
const apidomReferencePckg = require(apidomReferencePckgPath);
23+
24+
const {
25+
overrides: { '@swagger-api/apidom-reference': overrides },
26+
} = rootPckg;
27+
const overridesList = Object.keys(overrides).filter((key) => key.startsWith('@swagger-api/'));
28+
29+
overridesList.forEach((override) => {
30+
if (Object.hasOwn(apidomReferencePckg.dependencies, override)) {
31+
apidomReferencePckg.dependencies[override] = '=0.0.1';
32+
}
33+
});
34+
35+
fs.writeFileSync(apidomReferencePckgPath, JSON.stringify(apidomReferencePckg, null, 2));

0 commit comments

Comments
 (0)