Skip to content

Commit 2c2d2e3

Browse files
committed
refactor: Closer but still a bunch of issues
1 parent a8e740a commit 2c2d2e3

File tree

22 files changed

+113
-36
lines changed

22 files changed

+113
-36
lines changed

packages/cli/lib/lib/babel-config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ module.exports = function (env) {
2525
],
2626
].filter(Boolean),
2727
plugins: [
28+
require.resolve('@rschristian/babel-plugin-webpack-chunk-name-comments'),
2829
[require.resolve('@babel/plugin-proposal-decorators'), { legacy: true }],
2930
isProd &&
3031
require.resolve('babel-plugin-transform-react-remove-prop-types'),

packages/cli/lib/lib/webpack/prerender.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ module.exports = async function (env, params) {
2626
);
2727
return '';
2828
}
29-
return await prerender(app, { ...params, url });
29+
return (await prerender(app, { ...params, url })).html;
3030
} catch (err) {
3131
let stack = stackTrace.parse(err).filter(s => s.getFileName() === entry)[0];
3232
if (!stack) {

packages/cli/lib/lib/webpack/render-html-plugin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ module.exports = async function renderHTMLPlugin(config) {
101101
preRenderData: values,
102102
CLI_DATA: { preRenderData: { url, ...routeData } },
103103
ssr: config.prerender
104-
? (await prerender({ cwd, dest, src }, values)).html
104+
? await prerender({ cwd, dest, src }, values)
105105
: '',
106106
loadManifest,
107107
entrypoints,

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

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,6 @@ const cleanFilename = name =>
2424
''
2525
);
2626

27-
// TODO: Swap with the above when removing the async loader
28-
const cleanFilename2 = name =>
29-
(name = name.replace(/_/g, '-').replace(/(-index|-[jt]sx?$)/, ''));
30-
3127
/**
3228
* @returns {Promise<import('webpack').Configuration>}
3329
*/
@@ -92,12 +88,9 @@ async function clientConfig(env) {
9288
}
9389
return env.isProd ? '[name].[chunkhash:5].js' : '[name].js';
9490
},
95-
chunkFilename: pathData => {
96-
const chunkName = cleanFilename2(pathData.chunk.id);
97-
return env.isProd
98-
? `${chunkName}.chunk.[chunkhash:5].js`
99-
: `${chunkName}.chunk.js`;
100-
},
91+
chunkFilename: env.isProd
92+
? '[name].chunk.[chunkhash:5].js'
93+
: '[name].chunk.js',
10194
},
10295

10396
resolveLoader: {
@@ -182,7 +175,6 @@ function isProd(env) {
182175
cache: true,
183176

184177
optimization: {
185-
chunkIds: 'named',
186178
minimizer: [
187179
new TerserPlugin({
188180
extractComments: false,

packages/cli/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
"@preact/async-loader": "^3.0.1",
8282
"@prefresh/babel-plugin": "^0.4.1",
8383
"@prefresh/webpack": "^3.2.2",
84+
"@rschristian/babel-plugin-webpack-chunk-name-comments": "^0.1.1",
8485
"@types/webpack": "^4.38.0",
8586
"autoprefixer": "^10.4.7",
8687
"babel-loader": "^8.2.5",

packages/cli/tests/build.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ describe('preact build', () => {
117117
expect(await access(file)).toBeUndefined();
118118
});
119119

120-
describe('Push manifest plugin', () => {
120+
describe.skip('Push manifest plugin', () => {
121121
it('should produce correct default `push-manifest.json`', async () => {
122122
let dir = await create('default');
123123

@@ -281,7 +281,7 @@ describe('preact build', () => {
281281
});
282282

283283
it('--preload', async () => {
284-
let dir = await subject('preload-chunks');
284+
let dir = await subject('preload-modern');
285285

286286
await buildFast(dir, { preload: true });
287287
let head = await getHead(dir);

packages/cli/tests/images/build.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ exports.preload.true = `
112112
<link rel=\\"apple-touch-icon\\" href=\\"\\/assets\\/icons\\/apple-touch-icon\\.png\\">
113113
<link rel=\\"manifest\\" href=\\"\\/manifest\\.json\\">
114114
<link rel=\\"preload\\" href=\\"\\/bundle\\.\\w{5}\\.js\\" as=\\"script\\">
115-
<link rel=\\"preload\\" href=\\"\\/route-home\\.chunk\\.\\w{5}\\.js\\" as=\\"script\\">
116-
<link rel=\\"preload\\" href=\\"\\/route-home\\.chunk\\.\\w{5}\\.css\\" as=\\"style\\">
115+
<link rel=\\"preload\\" href=\\"\\/routes-home\\.chunk\\.\\w{5}\\.js\\" as=\\"script\\">
116+
<link rel=\\"preload\\" href=\\"\\/routes-home\\.chunk\\.\\w{5}\\.css\\" as=\\"style\\">
117117
<style>html{padding:0}<\\/style>
118118
<link href=\\"\\/bundle\\.\\w{5}\\.css\\" rel=\\"stylesheet\\" media=\\"print\\" onload=\\"this.media='all'\\">
119119
<noscript>
Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,21 @@
1-
import { Component } from 'preact';
2-
import { Router } from 'preact-router';
3-
import Home from './routes/home';
4-
import Route66 from './routes/route66';
5-
import Route89 from './routes/route89';
6-
import './style.css';
1+
import { LocationProvider, Router } from 'preact-iso/router';
2+
import { default as lazy, ErrorBoundary } from 'preact-iso/lazy';
73

8-
export default class App extends Component {
9-
handleRoute = e => {
10-
this.currentUrl = e.url;
11-
};
4+
const Home = lazy(() => import('./routes/home.js'));
5+
const Route66 = lazy(() => import('./routes/route66.js'));
6+
const Route89 = lazy(() => import('./routes/route89.js'));
7+
import './style.css';
128

13-
render(props) {
14-
return (
15-
<div id="app">
16-
<Router url={props.url} onChange={this.handleRoute}>
9+
export default function App() {
10+
return (
11+
<LocationProvider>
12+
<ErrorBoundary>
13+
<Router>
1714
<Home path="/" />
1815
<Route66 path="/route66" />
1916
<Route89 path="/route89" />
2017
</Router>
21-
</div>
22-
);
23-
}
18+
</ErrorBoundary>
19+
</LocationProvider>
20+
);
2421
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = function (config, env, helpers) {
2+
// TODO: clean up later, just removes the async loader
3+
if (env.isProd && !env.isServer) {
4+
config.module.rules.pop();
5+
}
6+
};
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { LocationProvider, Router } from 'preact-iso/router';
2+
import { default as lazy, ErrorBoundary } from 'preact-iso/lazy';
3+
4+
const Home = lazy(() => import('./routes/home.js'));
5+
const Route66 = lazy(() => import('./routes/route66.js'));
6+
const Route89 = lazy(() => import('./routes/route89.js'));
7+
import './style.css';
8+
9+
export default function App() {
10+
return (
11+
<LocationProvider>
12+
<ErrorBoundary>
13+
<Router>
14+
<Home path="/" />
15+
<Route66 path="/route66" />
16+
<Route89 path="/route89" />
17+
</Router>
18+
</ErrorBoundary>
19+
</LocationProvider>
20+
);
21+
}

0 commit comments

Comments
 (0)