Skip to content

Commit

Permalink
Add "engines" field to all packages to indicate minimum Node JS version
Browse files Browse the repository at this point in the history
Summary:
We currently have a minimum supported Node version of 14.17.0, and we (correctly) report a breaking change whenever we bump that requirement (eg, [0.73 release notes](https://github.com/facebook/metro/releases/tag/v0.73.0)), but we don't properly declare it in the package manifest.

That means users of older Node JS versions may encounter obscure and unhelpful parsing or runtime errors. By using the `"engines"` spec, we give the package manager the best chance of steering them towards an upgrade. This will also serve as a reference for contributors.

Changelog: **[Breaking]** Formalise minimum Node JS requirement at 14.17.0 via `package.json#engines`

Reviewed By: huntie

Differential Revision: D42904112

fbshipit-source-id: c1b546d32924e471c3ec2013a58a6d0ea43e4815
  • Loading branch information
robhogan authored and facebook-github-bot committed Feb 1, 2023
1 parent e890c99 commit c3e453e
Show file tree
Hide file tree
Showing 26 changed files with 92 additions and 10 deletions.
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -86,5 +86,8 @@
]
},
"license": "MIT",
"dependencies": {}
"dependencies": {},
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/buck-worker-tool/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,8 @@
"scripts": {
"prepare-release": "test -d build && rm -rf src.real && mv src src.real && mv build src",
"cleanup-release": "test ! -e build && mv src build && mv src.real src"
},
"engines": {
"node": ">=14.17.0"
}
}
5 changes: 4 additions & 1 deletion packages/metro-babel-register/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,8 @@
"prepare-release": "test -d build && rm -rf src.real && mv src src.real && mv build src",
"cleanup-release": "test ! -e build && mv src build && mv src.real src"
},
"license": "MIT"
"license": "MIT",
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/metro-babel-transformer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,8 @@
"hermes-parser": "0.8.0",
"metro-source-map": "0.74.1",
"nullthrows": "^1.1.1"
},
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/metro-cache-key/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,8 @@
"license": "MIT",
"devDependencies": {
"metro-memory-fs": "0.74.1"
},
"engines": {
"node": ">=14.17.0"
}
}
5 changes: 4 additions & 1 deletion packages/metro-cache/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,8 @@
"devDependencies": {
"metro-memory-fs": "0.74.1"
},
"license": "MIT"
"license": "MIT",
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/metro-config/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,8 @@
"devDependencies": {
"pretty-format": "^26.5.2",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=14.17.0"
}
}
5 changes: 4 additions & 1 deletion packages/metro-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,8 @@
"lodash.throttle": "^4.1.1",
"metro-resolver": "0.74.1"
},
"license": "MIT"
"license": "MIT",
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/metro-file-map/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,8 @@
},
"optionalDependencies": {
"fsevents": "^2.3.2"
},
"engines": {
"node": ">=14.17.0"
}
}
5 changes: 4 additions & 1 deletion packages/metro-hermes-compiler/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,8 @@
"prepare-release": "test -d build && rm -rf src.real && mv src src.real && mv build src",
"cleanup-release": "test ! -e build && mv src build && mv src.real src"
},
"license": "MIT"
"license": "MIT",
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/metro-inspector-proxy/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,8 @@
"debug": "^2.2.0",
"ws": "^7.5.1",
"yargs": "^17.5.1"
},
"engines": {
"node": ">=14.17.0"
}
}
5 changes: 4 additions & 1 deletion packages/metro-memory-fs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,8 @@
"prepare-release": "test -d build && rm -rf src.real && mv src src.real && mv build src",
"cleanup-release": "test ! -e build && mv src build && mv src.real src"
},
"license": "MIT"
"license": "MIT",
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/metro-minify-terser/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,8 @@
"license": "MIT",
"dependencies": {
"terser": "^5.15.0"
},
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/metro-minify-uglify/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,8 @@
"license": "MIT",
"dependencies": {
"uglify-es": "^3.1.9"
},
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/metro-react-native-babel-preset/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,8 @@
},
"peerDependencies": {
"@babel/core": "*"
},
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/metro-react-native-babel-transformer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,8 @@
},
"peerDependencies": {
"@babel/core": "*"
},
"engines": {
"node": ">=14.17.0"
}
}
5 changes: 4 additions & 1 deletion packages/metro-react-native-interop-tools/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,8 @@
"hermes-parser": "0.8.0",
"nullthrows": "^1.1.1"
},
"license": "MIT"
"license": "MIT",
"engines": {
"node": ">=14.17.0"
}
}
5 changes: 4 additions & 1 deletion packages/metro-resolver/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,8 @@
"dependencies": {
"absolute-path": "^0.0.0"
},
"license": "MIT"
"license": "MIT",
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/metro-runtime/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,8 @@
"@babel/core": "^7.20.0",
"react": "^18.2.0",
"react-test-renderer": "^18.2.0"
},
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/metro-source-map/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,8 @@
"@babel/core": "^7.20.0",
"@babel/parser": "^7.20.0",
"uglify-es": "^3.1.9"
},
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/metro-symbolicate/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,8 @@
"source-map": "^0.5.6",
"through2": "^2.0.1",
"vlq": "^1.0.0"
},
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/metro-transform-plugins/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,8 @@
"@babel/plugin-transform-flow-strip-types": "^7.0.0",
"@babel/types": "^7.20.0",
"metro": "0.74.1"
},
"engines": {
"node": ">=14.17.0"
}
}
3 changes: 3 additions & 0 deletions packages/metro-transform-worker/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,8 @@
"metro-memory-fs": "0.74.1",
"metro-minify-terser": "0.74.1",
"metro-react-native-babel-transformer": "0.74.1"
},
"engines": {
"node": ">=14.17.0"
}
}
5 changes: 4 additions & 1 deletion packages/metro/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,5 +78,8 @@
"mock-res": "^0.6.0",
"stack-trace": "^0.0.10"
},
"license": "MIT"
"license": "MIT",
"engines": {
"node": ">=14.17.0"
}
}
5 changes: 4 additions & 1 deletion packages/ob1/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,8 @@
"metro"
],
"license": "MIT",
"dependencies": {}
"dependencies": {},
"engines": {
"node": ">=14.17.0"
}
}
7 changes: 7 additions & 0 deletions scripts/__tests__/subpackages-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

const getPackages = require('../_getPackages');
const METRO_VERSION = require('../../lerna.json').version;
const ENGINES = require('../../package.json').engines;
const fs = require('fs');
const path = require('path');

Expand Down Expand Up @@ -46,6 +47,12 @@ it('forces all packages to use the main metro version', () => {
});
});

it('forces all packages to use the root "engines" spec', () => {
checkAssertionInPackages(getPackages(), packagePath => {
expect(readPackageJson(packagePath).engines).toEqual(ENGINES);
});
});

it('forces all metro dependencies to be fixed to the main version', () => {
const packages = getPackages();
const packageNames = new Set(
Expand Down

0 comments on commit c3e453e

Please sign in to comment.