Skip to content

Commit d2005ba

Browse files
authored
fix(build): Ensure tree shaking works properly for ESM output (#11122)
Apparently, webpack looks at `sideEffects` in the generated package.json, and based on this does not tree shake correctly 😬 I also bumped webpack (one of the things I tried while debugging this...). This now puts the original `sideEffects` value from the original `package.json` and puts it into the esm package.json.
1 parent 7e2c5f1 commit d2005ba

File tree

4 files changed

+28
-53
lines changed

4 files changed

+28
-53
lines changed

dev-packages/browser-integration-tests/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
"babel-loader": "^8.2.2",
4646
"html-webpack-plugin": "^5.5.0",
4747
"pako": "^2.1.0",
48-
"webpack": "^5.52.0"
48+
"webpack": "^5.90.3"
4949
},
5050
"devDependencies": {
5151
"@types/glob": "8.0.0",

dev-packages/rollup-utils/plugins/make-esm-plugin.mjs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,30 @@
1+
import fs from 'node:fs';
2+
13
/**
24
* Outputs a package.json file with {type: module} in the root of the output directory so that Node
35
* treats .js files as ESM.
46
*/
57
export function makePackageNodeEsm() {
68
return {
79
name: 'make-package-node-esm',
8-
generateBundle() {
10+
async generateBundle() {
11+
// We need to keep the `sideEffects` value from the original package.json,
12+
// as e.g. webpack seems to depend on this
13+
// without this, tree shaking does not work as expected
14+
const packageJSONPath = (await this.resolve('package.json')).id;
15+
16+
const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath, 'utf-8'));
17+
const sideEffects = packageJSON.sideEffects;
18+
19+
const newPackageJSON = {
20+
type: 'module',
21+
sideEffects,
22+
};
23+
924
this.emitFile({
1025
type: 'asset',
1126
fileName: 'package.json',
12-
source: '{ "type": "module" }',
27+
source: JSON.stringify(newPackageJSON),
1328
});
1429
},
1530
};

packages/ember/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
"qunit": "~2.19.2",
8181
"qunit-dom": "~2.0.0",
8282
"sinon": "15.2.0",
83-
"webpack": "~5.74.0"
83+
"webpack": "~5.90.3"
8484
},
8585
"engines": {
8686
"node": ">=14.18"

yarn.lock

Lines changed: 9 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -6973,11 +6973,6 @@
69736973
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83"
69746974
integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==
69756975

6976-
"@types/estree@^0.0.51":
6977-
version "0.0.51"
6978-
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
6979-
integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
6980-
69816976
69826977
version "4.17.31"
69836978
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f"
@@ -15063,14 +15058,6 @@ enhanced-resolve@^4.3.0, enhanced-resolve@^4.5.0:
1506315058
memory-fs "^0.5.0"
1506415059
tapable "^1.0.0"
1506515060

15066-
enhanced-resolve@^5.10.0, enhanced-resolve@^5.3.2:
15067-
version "5.10.0"
15068-
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6"
15069-
integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==
15070-
dependencies:
15071-
graceful-fs "^4.2.4"
15072-
tapable "^2.2.0"
15073-
1507415061
enhanced-resolve@^5.15.0:
1507515062
version "5.15.0"
1507615063
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35"
@@ -15079,6 +15066,14 @@ enhanced-resolve@^5.15.0:
1507915066
graceful-fs "^4.2.4"
1508015067
tapable "^2.2.0"
1508115068

15069+
enhanced-resolve@^5.3.2:
15070+
version "5.10.0"
15071+
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6"
15072+
integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==
15073+
dependencies:
15074+
graceful-fs "^4.2.4"
15075+
tapable "^2.2.0"
15076+
1508215077
enhanced-resolve@^5.8.0:
1508315078
version "5.12.0"
1508415079
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634"
@@ -15216,11 +15211,6 @@ es-module-lexer@^0.7.1:
1521615211
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.7.1.tgz#c2c8e0f46f2df06274cdaf0dd3f3b33e0a0b267d"
1521715212
integrity sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==
1521815213

15219-
es-module-lexer@^0.9.0:
15220-
version "0.9.3"
15221-
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19"
15222-
integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==
15223-
1522415214
es-module-lexer@^1.2.1:
1522515215
version "1.4.1"
1522615216
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5"
@@ -32925,37 +32915,7 @@ webpack@^4.47.0:
3292532915
watchpack "^1.7.4"
3292632916
webpack-sources "^1.4.1"
3292732917

32928-
webpack@^5.52.0, webpack@~5.74.0:
32929-
version "5.74.0"
32930-
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980"
32931-
integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==
32932-
dependencies:
32933-
"@types/eslint-scope" "^3.7.3"
32934-
"@types/estree" "^0.0.51"
32935-
"@webassemblyjs/ast" "1.11.1"
32936-
"@webassemblyjs/wasm-edit" "1.11.1"
32937-
"@webassemblyjs/wasm-parser" "1.11.1"
32938-
acorn "^8.7.1"
32939-
acorn-import-assertions "^1.7.6"
32940-
browserslist "^4.14.5"
32941-
chrome-trace-event "^1.0.2"
32942-
enhanced-resolve "^5.10.0"
32943-
es-module-lexer "^0.9.0"
32944-
eslint-scope "5.1.1"
32945-
events "^3.2.0"
32946-
glob-to-regexp "^0.4.1"
32947-
graceful-fs "^4.2.9"
32948-
json-parse-even-better-errors "^2.3.1"
32949-
loader-runner "^4.2.0"
32950-
mime-types "^2.1.27"
32951-
neo-async "^2.6.2"
32952-
schema-utils "^3.1.0"
32953-
tapable "^2.1.1"
32954-
terser-webpack-plugin "^5.1.3"
32955-
watchpack "^2.4.0"
32956-
webpack-sources "^3.2.3"
32957-
32958-
webpack@^5.90.3:
32918+
webpack@^5.90.3, webpack@~5.90.3:
3295932919
version "5.90.3"
3296032920
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.3.tgz#37b8f74d3ded061ba789bb22b31e82eed75bd9ac"
3296132921
integrity sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==

0 commit comments

Comments
 (0)