Skip to content

Commit df9450a

Browse files
committed
Refactor/remove preact 8 support (#1716)
* refactor: Drops support for Preact v8 * docs: Adding changeset
1 parent d3e7595 commit df9450a

File tree

15 files changed

+23
-194
lines changed

15 files changed

+23
-194
lines changed

.changeset/cuddly-ducks-reply.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@preact/async-loader': major
3+
'preact-cli': major
4+
---
5+
6+
Drops support for Preact v8

packages/async-loader/async-legacy.js

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

packages/async-loader/index.js

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
const path = require('path');
2-
const { getOptions, stringifyRequest } = require('loader-utils');
3-
const PREACT_LEGACY_MODE = 'PREACT_LEGACY_MODE';
42

5-
exports.pitch = function (req, mode) {
3+
exports.pitch = function (req) {
64
this.cacheable && this.cacheable();
75
let name;
8-
let query = getOptions(this) || {};
6+
let query = this.getOptions() || {};
97
let routeName =
108
typeof query.name === 'function' ? query.name(this.resourcePath) : null;
119

@@ -19,23 +17,19 @@ exports.pitch = function (req, mode) {
1917

2018
// import Async from '${path.relative(process.cwd(), path.resolve(__dirname, 'async-component.js'))}';
2119
return `
22-
import Async from ${stringifyRequest(
23-
this,
24-
path.resolve(
25-
__dirname,
26-
mode === PREACT_LEGACY_MODE ? 'async-legacy.js' : 'async.js'
27-
) // explicit value check because webpack sends 2nd argument values but we dont use it
20+
import Async from ${JSON.stringify(
21+
this.utils.contextify(this.context, path.resolve(__dirname, 'async.js'))
2822
)};
2923
3024
function load(cb) {
3125
require.ensure([], function (require) {
32-
var result = require(${stringifyRequest(this, '!!' + req)});
26+
var result = require(${JSON.stringify(
27+
this.utils.contextify(this.context, '!!' + req)
28+
)});
3329
typeof cb === 'function' && cb(result);
3430
}${name ? ', ' + JSON.stringify(name) : ''});
3531
}
3632
3733
export default Async(load);
3834
`;
3935
};
40-
41-
exports.PREACT_LEGACY_MODE = PREACT_LEGACY_MODE;

packages/async-loader/legacy.js

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

packages/async-loader/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@
1818
"node": ">=8"
1919
},
2020
"dependencies": {
21-
"kleur": "^4.1.4",
22-
"loader-utils": "^2.0.0"
21+
"kleur": "^4.1.4"
2322
},
2423
"peerDependencies": {
2524
"preact": ">= 10.0.0"

packages/cli/lib/index.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ prog
6060
Browsers: ['Chrome', 'Edge', 'Firefox', 'Safari'],
6161
npmPackages: [
6262
'preact',
63-
'preact-compat',
6463
'preact-cli',
6564
'preact-router',
6665
'preact-render-to-string',

packages/cli/lib/lib/webpack/utils.js

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

packages/cli/lib/lib/webpack/webpack-base-config.js

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ const webpack = require('webpack');
22
const path = require('path');
33
const { resolve, dirname } = require('path');
44
const { readFileSync, existsSync } = require('fs');
5-
const { isInstalledVersionPreactXOrAbove } = require('./utils');
65
const autoprefixer = require('autoprefixer');
76
const browserslist = require('browserslist');
87
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
@@ -64,7 +63,6 @@ function getSassConfiguration(...includePaths) {
6463
*/
6564
module.exports = function createBaseConfig(env) {
6665
const { cwd, isProd, src, source } = env;
67-
const IS_SOURCE_PREACT_X_OR_ABOVE = isInstalledVersionPreactXOrAbove(cwd);
6866
// Apply base-level `env` values
6967
env.dest = resolve(cwd, env.dest || 'build');
7068
env.manifest = readJson(source('manifest.json')) || {};
@@ -82,19 +80,6 @@ module.exports = function createBaseConfig(env) {
8280
let cliNodeModules = findAllNodeModules(__dirname);
8381
let nodeModules = [...new Set([...userNodeModules, ...cliNodeModules])];
8482

85-
let compat = 'preact-compat';
86-
try {
87-
compat = dirname(
88-
require.resolve('preact/compat/package.json', { paths: [cwd] })
89-
);
90-
} catch (e) {
91-
try {
92-
compat = dirname(
93-
require.resolve('preact-compat/package.json', { paths: [cwd] })
94-
);
95-
} catch (e) {}
96-
}
97-
9883
let tsconfig = resolveTsconfig(cwd, isProd);
9984

10085
let postcssPlugins;
@@ -137,14 +122,14 @@ module.exports = function createBaseConfig(env) {
137122
style: source('style'),
138123
'preact-cli-entrypoint': source('index'),
139124
url: dirname(require.resolve('native-url/package.json')),
140-
// preact/compat aliases for supporting React dependencies:
141-
react: compat,
142-
'react-dom': compat,
143-
'preact-compat': compat,
125+
react: require.resolve('preact/compat'),
126+
'react-dom/test-utils': require.resolve('preact/test-utils'),
127+
'react-dom': require.resolve('preact/compat'),
128+
'react/jsx-runtime': require.resolve('preact/jsx-runtime'),
144129
'react-addons-css-transition-group': 'preact-css-transition-group',
145-
'preact-cli/async-component': IS_SOURCE_PREACT_X_OR_ABOVE
146-
? require.resolve('@preact/async-loader/async')
147-
: require.resolve('@preact/async-loader/async-legacy'),
130+
'preact-cli/async-component': require.resolve(
131+
'@preact/async-loader/async'
132+
),
148133
},
149134
},
150135

packages/cli/lib/lib/webpack/webpack-client-config.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
const webpack = require('webpack');
22
const { resolve, join } = require('path');
33
const { existsSync } = require('fs');
4-
const { isInstalledVersionPreactXOrAbove } = require('./utils');
54
const { merge } = require('webpack-merge');
65
const { filter } = require('minimatch');
76
const SizePlugin = require('size-plugin');
@@ -29,11 +28,8 @@ const cleanFilename = name =>
2928
* @returns {Promise<import('webpack').Configuration>}
3029
*/
3130
async function clientConfig(env) {
32-
const { source, src, cwd } = env;
33-
const IS_SOURCE_PREACT_X_OR_ABOVE = isInstalledVersionPreactXOrAbove(cwd);
34-
const asyncLoader = IS_SOURCE_PREACT_X_OR_ABOVE
35-
? require.resolve('@preact/async-loader')
36-
: require.resolve('@preact/async-loader/legacy');
31+
const { source, src } = env;
32+
const asyncLoader = require.resolve('@preact/async-loader');
3733

3834
let entry = {
3935
bundle: resolve(__dirname, './../entry'),

packages/cli/tests/client.test.js

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -22,35 +22,6 @@ describe('client-side tests', () => {
2222
PORT = await getPort();
2323
});
2424

25-
//it('should hydrate routes progressively with preact8.', async () => {
26-
// let dir = await subject('progressive-hydration-preact8');
27-
// await build(dir, {}, true);
28-
// const server = getServer(join(dir, 'build'), PORT);
29-
30-
// // let page = await loadPage(chrome, `http://127.0.0.1:${PORT}/`);
31-
// const page = await chrome.newPage();
32-
33-
// page.on('console', consoleMessage => {
34-
// // eslint-disable-next-line
35-
// console[consoleMessage.type()](consoleMessage.text());
36-
// });
37-
38-
// await page.goto(`http://127.0.0.1:${PORT}/`);
39-
40-
// // await waitUntilExpression(page, `window.booted`);
41-
// await sleep(500);
42-
43-
// const mutations = await page.evaluate('window.ROOT_MUTATION_COUNT');
44-
45-
// expect(mutations).toEqual(0);
46-
47-
// expect(await page.evaluate('window.CHANGED_VAR')).toEqual(undefined);
48-
// await page.click('button');
49-
// expect(await page.evaluate('window.CHANGED_VAR')).toEqual(1);
50-
51-
// server.server.close();
52-
//});
53-
5425
it('should hydrate for pre-rendered URLs only', async () => {
5526
let dir = await subject('prerendering-hydration');
5627
await build(dir, {});

0 commit comments

Comments
 (0)