Skip to content

Commit 05ba4b2

Browse files
authored
fix: Ensure CLI works out-of-the-box on Node 16+ (#1774)
* fix: Ensure CLI works out-of-the-box on Node 16+ * fix: I can't spell * docs: Adding changeset * test: Fixing test images (unrelated)
1 parent 783bb01 commit 05ba4b2

File tree

5 files changed

+35
-14
lines changed

5 files changed

+35
-14
lines changed

.changeset/fair-teachers-marry.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'preact-cli': patch
3+
---
4+
5+
Injects necessary Node options config into new projects if user's Node version is 16+

packages/cli/src/commands/create.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const {
1919
warn,
2020
dirExists,
2121
normalizeTemplatesResponse,
22+
isNodeVersionGreater,
2223
} = require('../util');
2324
const {
2425
CUSTOM_TEMPLATE,
@@ -313,6 +314,15 @@ exports.create = async function createCommand(repo, dest, argv) {
313314
spinner.text = 'Updating `name` within `package.json` file';
314315
pkgData.name = argv.name.toLowerCase().replace(/\s+/g, '_');
315316
}
317+
318+
if (repo.startsWith(ORG) && isNodeVersionGreater('16.0.0')) {
319+
pkgData.scripts.build =
320+
'cross-env NODE_OPTIONS=--openssl-legacy-provider preact build';
321+
pkgData.scripts.dev =
322+
'cross-env NODE_OPTIONS=--openssl-legacy-provider preact watch';
323+
pkgData.devDependencies['cross-env'] = '^7.0.3';
324+
}
325+
316326
// Find a `manifest.json`; use the first match, if any
317327
let files = await glob(target + '/**/manifest.json');
318328
let manifest = files[0] && JSON.parse(await readFile(files[0]));

packages/cli/src/index.js

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,12 @@ const sade = require('sade');
44
const notifier = require('update-notifier');
55
const { error } = require('./util');
66
const pkg = require('../package.json');
7+
const { isNodeVersionGreater } = require('./util');
78

8-
const ver = process.version;
99
const min = pkg.engines.node;
10-
if (
11-
ver
12-
.substring(1)
13-
.localeCompare(min.match(/\d+/g).join('.'), 'en', { numeric: true }) === -1
14-
) {
10+
if (!isNodeVersionGreater(min)) {
1511
error(
16-
`You are using Node ${ver} but preact-cli requires Node ${min}. Please upgrade Node to continue!\n`
12+
`You are using Node ${process.version} but preact-cli requires Node ${min}. Please upgrade Node to continue!\n`
1713
);
1814
}
1915

packages/cli/src/util.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,16 @@ exports.toBool = function (val) {
5656
return val !== void 0 && val !== false && !/false|0/.test(val);
5757
};
5858

59+
exports.isNodeVersionGreater = function (minimum) {
60+
return (
61+
process.version
62+
.substring(1)
63+
.localeCompare(minimum.match(/\d+/g).join('.'), 'en', {
64+
numeric: true,
65+
}) === 1
66+
);
67+
};
68+
5969
exports.esmImport = require('esm')(module);
6070

6171
/**

packages/cli/tests/images/build.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,23 @@ exports.default = Object.assign({}, common, {
1313
'assets/preact-logo.svg': 645,
1414
'assets/preact-logo-inverse.svg': 649,
1515
'assets/favicon.ico': 15086,
16-
'ssr-build/ssr-bundle.2b941.css': 2601,
17-
'ssr-build/ssr-bundle.2b941.css.map': 3708,
16+
'ssr-build/ssr-bundle.82489.css': 2601,
17+
'ssr-build/ssr-bundle.82489.css.map': 3708,
1818
'ssr-build/ssr-bundle.js': 28830,
1919
'ssr-build/ssr-bundle.js.map': 52686,
2020
'ssr-build/asset-manifest.json': 178,
2121
'bundle.4c6ac.css': 1276,
22-
'bundle.fbf1b.js': 22529,
23-
'bundle.fbf1b.js.map': 111801,
22+
'bundle.c4895.js': 22529,
23+
'bundle.c4895.js.map': 111801,
2424
'favicon.ico': 15086,
2525
'index.html': 4127,
2626
'manifest.json': 455,
2727
'preact_prerender_data.json': 11,
2828
'push-manifest.json': 388,
2929
'asset-manifest.json': 1142,
30-
'route-home.chunk.c490f.css': 834,
31-
'route-home.chunk.50bd0.js': 1149,
32-
'route-home.chunk.50bd0.js.map': 1961,
30+
'route-home.chunk.9bcab.css': 834,
31+
'route-home.chunk.5d28d.js': 1149,
32+
'route-home.chunk.5d28d.js.map': 1961,
3333
'route-profile.chunk.4c330.js': 3490,
3434
'route-profile.chunk.4c330.js.map': 15002,
3535
});

0 commit comments

Comments
 (0)