Skip to content

Commit 01169a0

Browse files
committed
refactor: Remove --preload flag (#1737)
* refactor: Removes `--preload` flag & functionality * docs: Adding changeset * docs: Updating readme for removal of preload
1 parent 4f49323 commit 01169a0

File tree

21 files changed

+21
-378
lines changed

21 files changed

+21
-378
lines changed

.changeset/poor-sloths-mate.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'preact-cli': major
3+
---
4+
5+
Removes `--preload` flag and functionality from build command.

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@ $ [npm run / yarn] preact build
125125
--babelConfig Path to custom Babel config (default .babelrc)
126126
--json Generate build stats for bundle analysis
127127
--template Path to custom HTML template (default 'src/template.html')
128-
--preload Adds preload tags to the document its assets (default false)
129128
--analyze Launch interactive Analyzer to inspect production bundle(s)
130129
--prerender Renders route(s) into generated static HTML (default true)
131130
--prerenderUrls Path to pre-rendered routes config (default prerender-urls.json)

packages/cli/src/index.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,6 @@ prog
4444
'--template',
4545
'Path to custom HTML template (default "src/template.html")'
4646
)
47-
.option(
48-
'--preload',
49-
'Adds preload links to the HTML for required resources',
50-
false
51-
)
5247
.option(
5348
'--analyze',
5449
'Launch interactive Analyzer to inspect production bundle(s)',

packages/cli/src/lib/webpack/create-load-manifest.js

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

packages/cli/src/lib/webpack/push-manifest.js

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

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

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ const {
77
} = require('html-webpack-skip-assets-plugin');
88
const HtmlWebpackPlugin = require('html-webpack-plugin');
99
const prerender = require('./prerender');
10-
const createLoadManifest = require('./create-load-manifest');
1110
const { esmImport, tryResolveConfig, warn } = require('../../util');
1211

1312
const PREACT_FALLBACK_URL = '/200.html';
@@ -85,26 +84,16 @@ module.exports = async function renderHTMLPlugin(config) {
8584
entryFiles.find(file => /\.(m?js)(\?|$)/.test(file));
8685
});
8786

88-
let loadManifest = compilation.assets['push-manifest.json']
89-
? JSON.parse(compilation.assets['push-manifest.json'].source())
90-
: createLoadManifest(
91-
compilation.assets,
92-
compilation.namedChunkGroups,
93-
config.isProd
94-
);
95-
9687
return {
9788
cli: {
9889
title,
9990
url,
10091
manifest: config.manifest,
10192
inlineCss: config['inline-css'],
102-
preload: config.preload,
10393
config,
10494
preRenderData: values,
10595
CLI_DATA: { preRenderData: { url, ...routeData } },
10696
ssr: config.prerender ? prerender({ cwd, dest, src }, values) : '',
107-
loadManifest,
10897
entrypoints,
10998
},
11099
htmlWebpackPlugin: {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ module.exports = function createBaseConfig(env) {
302302
}),
303303
new WebpackManifestPlugin({
304304
fileName: 'asset-manifest.json',
305-
assetHookStage: webpack.Compiler.PROCESS_ASSETS_STAGE_ANALYSE,
305+
assetHookStage: webpack.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE,
306306
// TODO: Remove this next breaking change and use the full filepath from this manifest
307307
// when referring to built assets, i.e.:
308308
// https://github.com/preactjs/preact-cli/blob/master/packages/cli/src/resources/head-end.ejs#L1

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
1010
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
1111
const CrittersPlugin = require('critters-webpack-plugin');
1212
const renderHTMLPlugin = require('./render-html-plugin');
13-
const PushManifestPlugin = require('./push-manifest');
1413
const baseConfig = require('./webpack-base-config');
1514
const { InjectManifest } = require('workbox-webpack-plugin');
1615
const CompressionPlugin = require('compression-webpack-plugin');
@@ -125,7 +124,6 @@ async function clientConfig(env) {
125124
'process.env.ADD_SW': env.sw,
126125
'process.env.PRERENDER': env.prerender,
127126
}),
128-
new PushManifestPlugin(env.isProd),
129127
...(await renderHTMLPlugin(env)),
130128
copyPatterns.length !== 0 &&
131129
new CopyWebpackPlugin({

packages/cli/src/resources/head-end.ejs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,3 @@
22
<% if (cli.manifest.theme_color) { %>
33
<meta name="theme-color" content="<%= cli.manifest.theme_color %>">
44
<% } %>
5-
<% const filesRegexp = cli.inlineCss ? /\.(chunk\.\w{5}\.css|js)$/ : /\.(css|js)$/;%>
6-
<% for (const file in cli.loadManifest[cli.url]) { %>
7-
<% if (cli.preload && file && file.match(filesRegexp)) { %>
8-
<% /* crossorigin for main bundle as that is loaded from `<script type=module` tag, other lazy loaded bundles are from webpack so its not needed */ %>
9-
<link rel="preload" href="<%= htmlWebpackPlugin.files.publicPath + file %>" as="<%= file.match(/\.css$/)?'style':'script' %>" <%= file.match(/bundle\.\w{5}\.(?<!legacy)\.js$/)?'crossorigin="anonymous"':'' %>>
10-
<% } %>
11-
<% } %>

packages/cli/tests/build.test.js

Lines changed: 0 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -90,58 +90,6 @@ describe('preact build', () => {
9090
expect(await access(file)).toBeUndefined();
9191
});
9292

93-
describe('Push manifest plugin', () => {
94-
it('should produce correct default `push-manifest.json`', async () => {
95-
let dir = await create('default');
96-
97-
await buildFast(dir);
98-
const manifest = await readFile(
99-
`${dir}/build/push-manifest.json`,
100-
'utf8'
101-
);
102-
expect(manifest).toEqual(
103-
expect.stringMatching(getRegExpFromMarkup(images.pushManifest))
104-
);
105-
});
106-
107-
it('should produce correct `push-manifest.json` when expected values are missing', async () => {
108-
// In this subject, there is no source CSS which means no CSS asset is output.
109-
// In the past, this would result in `"undefined": { type: "style" ... }` being added to the manifest.
110-
let dir = await subject('custom-webpack');
111-
await buildFast(dir);
112-
const manifest = await readFile(
113-
`${dir}/build/push-manifest.json`,
114-
'utf8'
115-
);
116-
expect(manifest).not.toMatch(/"undefined"/);
117-
});
118-
119-
// Issue #1675
120-
it('should produce correct `push-manifest.json` when user configures output filenames', async () => {
121-
let dir = await subject('custom-webpack');
122-
123-
const config = await readFile(`${dir}/preact.config.js`, 'utf8');
124-
await writeFile(
125-
`${dir}/preact.config.js`,
126-
config.replace(
127-
"config.output.filename = '[name].js'",
128-
"config.output.filename = 'scripts/[name].js'"
129-
)
130-
);
131-
132-
await buildFast(dir, { prerender: false });
133-
const manifest = await readFile(
134-
`${dir}/build/push-manifest.json`,
135-
'utf8'
136-
);
137-
expect(manifest).toEqual(
138-
expect.stringMatching(
139-
getRegExpFromMarkup(images.pushManifestAlteredFilenames)
140-
)
141-
);
142-
});
143-
});
144-
14593
it('should use a custom `.env` with prefixed environment variables', async () => {
14694
let dir = await subject('custom-dotenv');
14795
await buildFast(dir);
@@ -253,22 +201,6 @@ describe('preact build', () => {
253201
);
254202
});
255203

256-
it('--preload', async () => {
257-
let dir = await subject('preload-chunks');
258-
259-
await buildFast(dir, { preload: true });
260-
let head = await getHead(dir);
261-
expect(head).toEqual(
262-
expect.stringMatching(getRegExpFromMarkup(images.preload.true))
263-
);
264-
265-
await buildFast(dir, { preload: false });
266-
head = await getHead(dir);
267-
expect(head).toEqual(
268-
expect.stringMatching(getRegExpFromMarkup(images.preload.false))
269-
);
270-
});
271-
272204
it('--prerender', async () => {
273205
let dir = await subject('minimal');
274206

0 commit comments

Comments
 (0)