Skip to content

Commit 4405b3c

Browse files
committed
[code-infra] Support JSX/TS in bundle monitor scripts
1 parent 997d985 commit 4405b3c

File tree

3 files changed

+60
-4
lines changed

3 files changed

+60
-4
lines changed

packages/bundle-size-checker/package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@
2424
"dependencies": {
2525
"@aws-sdk/client-s3": "^3.515.0",
2626
"@aws-sdk/credential-providers": "^3.787.0",
27+
"@babel/core": "^7.27.1",
28+
"@babel/preset-env": "^7.20.2",
29+
"@babel/preset-react": "^7.18.6",
30+
"@babel/preset-typescript": "^7.27.1",
31+
"babel-loader": "^10.0.0",
2732
"chalk": "^5.4.1",
2833
"compression-webpack-plugin": "^10.0.0",
2934
"css-loader": "^7.1.2",

packages/bundle-size-checker/src/worker.js

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import TerserPlugin from 'terser-webpack-plugin';
88
import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';
99
import { createRequire } from 'node:module';
1010
import chalk from 'chalk';
11+
import * as module from 'module';
1112
import { byteSizeFormatter } from './formatUtils.js';
1213

1314
/**
@@ -27,10 +28,22 @@ const require = createRequire(import.meta.url);
2728
*/
2829
async function getPeerDependencies(packageName) {
2930
try {
30-
// Try to resolve packageName/package.json
31-
const packageJsonPath = require.resolve(`${packageName}/package.json`, {
32-
paths: [rootDir],
33-
});
31+
/** @type {string | undefined} */
32+
let packageJsonPath;
33+
34+
if (module.findPackageJSON) {
35+
// findPackageJSON was added in: v23.2.0, v22.14.0
36+
packageJsonPath = module.findPackageJSON(packageName, `${rootDir}/_.js`);
37+
} else {
38+
// Try to resolve packageName/package.json
39+
packageJsonPath = require.resolve(`${packageName}/package.json`, {
40+
paths: [rootDir],
41+
});
42+
}
43+
44+
if (!packageJsonPath) {
45+
return null;
46+
}
3447

3548
// Read and parse the package.json
3649
const packageJsonContent = await fs.readFile(packageJsonPath, 'utf8');
@@ -160,6 +173,16 @@ async function createWebpackConfig(entry, args) {
160173
},
161174
module: {
162175
rules: [
176+
{
177+
test: /\.[jt]sx?$/,
178+
exclude: /node_modules/,
179+
use: {
180+
loader: 'babel-loader',
181+
options: {
182+
presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'],
183+
},
184+
},
185+
},
163186
{
164187
test: /\.css$/,
165188
use: [require.resolve('css-loader')],

pnpm-lock.yaml

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

0 commit comments

Comments
 (0)