Skip to content

Commit d85c965

Browse files
authored
[Blazor] Switch to rollup for bundling (#53095)
* Uses rollup for producing the JS bundles instead of webpack. * Removes obsolete and unused JS dependencies.
1 parent f31dd94 commit d85c965

File tree

8 files changed

+9853
-6828
lines changed

8 files changed

+9853
-6828
lines changed

package-lock.json

Lines changed: 9752 additions & 6728 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Components/Web.JS/dist/Release/blazor.server.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Components/Web.JS/dist/Release/blazor.web.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Components/Web.JS/dist/Release/blazor.webview.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Components/Web.JS/package.json

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,37 +16,35 @@
1616
"test:watch": "jest --watch",
1717
"test:debug": "node --nolazy --inspect-brk ./node_modules/jest/bin/jest.js --runInBand --colors --verbose",
1818
"build": "npm run build:debug && npm run build:production",
19-
"build:debug": "cd src && webpack --mode development --config ./webpack.config.js",
20-
"build:production": "cd src && webpack --mode production --config ./webpack.config.js"
19+
"build:debug": "rollup -c --environment development",
20+
"build:production": "rollup -c --environment production"
2121
},
2222
"devDependencies": {
2323
"@babel/core": "^7.23.6",
2424
"@babel/preset-env": "^7.23.6",
2525
"@babel/preset-typescript": "^7.23.3",
26-
"@jest/globals": "^29.7.0",
2726
"@microsoft/dotnet-js-interop": "*",
2827
"@microsoft/signalr": "*",
2928
"@microsoft/signalr-protocol-msgpack": "*",
30-
"@swc/core": "^1.3.101",
31-
"@swc/jest": "^0.2.29",
29+
"@rollup/plugin-commonjs": "^25.0.7",
30+
"@rollup/plugin-node-resolve": "^15.2.3",
31+
"@rollup/plugin-replace": "^5.0.5",
32+
"@rollup/plugin-terser": "^0.4.4",
33+
"@rollup/plugin-typescript": "^11.1.5",
3234
"@types/jsdom": "^16.2.14",
3335
"@typescript-eslint/eslint-plugin": "^5.26.0",
3436
"@typescript-eslint/parser": "^5.26.0",
3537
"babel-jest": "^29.7.0",
3638
"dotnet-runtime": "*",
3739
"eslint": "^8.16.0",
3840
"eslint-plugin-header": "^3.1.1",
39-
"inspectpack": "^4.7.1",
4041
"jest": "^29.7.0",
4142
"jest-environment-jsdom": "^29.7.0",
4243
"jest-junit": "^16.0.0",
4344
"rimraf": "^3.0.2",
44-
"terser": "^5.14.2",
45-
"ts-jest": "^29.0.5",
46-
"ts-loader": "^9.5.1",
47-
"typescript": "^5.3.3",
48-
"webpack": "^5.72.1",
49-
"webpack-cli": "^4.9.2"
45+
"rollup": "^4.9.2",
46+
"rollup-plugin-filesize": "^10.0.0",
47+
"typescript": "^5.3.3"
5048
},
5149
"resolutions": {
5250
"tough-cookie": ">=4.1.3"
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import path from 'path';
2+
import typescript from '@rollup/plugin-typescript';
3+
import terser from '@rollup/plugin-terser';
4+
import resolve from '@rollup/plugin-node-resolve';
5+
import commonjs from '@rollup/plugin-commonjs';
6+
import replace from '@rollup/plugin-replace';
7+
import filesize from 'rollup-plugin-filesize';
8+
import { fileURLToPath } from 'url';
9+
10+
const __filename = fileURLToPath(import.meta.url);
11+
const __dirname = path.dirname(__filename);
12+
13+
console.log(__dirname);
14+
15+
export default ({ environment }) => {
16+
17+
var inputOutputMap = {
18+
'blazor.server': './src/Boot.Server.ts',
19+
'blazor.web': './src/Boot.Web.ts',
20+
'blazor.webassembly': './src/Boot.WebAssembly.ts',
21+
'blazor.webview': './src/Boot.WebView.ts',
22+
};
23+
24+
/**
25+
* @type {import('rollup').RollupOptions}
26+
*/
27+
const baseConfig = {
28+
output: {
29+
dir: path.join(__dirname, '/dist', environment === 'development' ? '/Debug' : '/Release'),
30+
format: 'cjs',
31+
sourcemap: true,
32+
entryFileNames: '[name].js',
33+
},
34+
plugins: [
35+
resolve(),
36+
commonjs(),
37+
typescript({
38+
tsconfig: path.join(__dirname, 'tsconfig.json')
39+
}),
40+
replace({
41+
'process.env.NODE_DEBUG': 'false',
42+
'Platform.isNode': 'false',
43+
preventAssignment: true
44+
}),
45+
terser({
46+
compress: {
47+
passes: 3
48+
},
49+
mangle: true,
50+
module: false,
51+
format: {
52+
ecma: 2020
53+
},
54+
keep_classnames: false,
55+
keep_fnames: false,
56+
toplevel: true
57+
})
58+
,
59+
environment !== 'development' && filesize({ showMinifiedSize: true, showGzippedSize: true, showBrotliSize: true })
60+
],
61+
treeshake: 'smallest',
62+
logLevel: 'silent'
63+
};
64+
65+
return Object.entries(inputOutputMap).map(([output, input]) => {
66+
const config = {
67+
...baseConfig,
68+
output: {
69+
...baseConfig.output,
70+
},
71+
input: { [output]: input }
72+
};
73+
74+
if (environment === 'development') {
75+
if (input.includes("WebView")) {
76+
config.output.sourcemap = 'inline';
77+
} else {
78+
config.output.sourcemap = true;
79+
}
80+
} else {
81+
config.output.sourcemap = false;
82+
}
83+
84+
return config;
85+
});
86+
};

src/Components/Web.JS/src/webpack.config.js

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

src/Components/Web.JS/tsconfig.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44
"noImplicitAny": false,
55
"noEmitOnError": true,
66
"removeComments": false,
7-
"sourceMap": true,
8-
"target": "es2019",
7+
"target": "es2020",
98
"module": "es2020",
10-
"lib": ["es2019", "dom"],
9+
"lib": ["es2020", "dom"],
1110
"strict": true,
1211
}
1312
}

0 commit comments

Comments
 (0)