diff --git a/packages/cli/package.json b/packages/cli/package.json index 0719b1511a..ddd0ff77a0 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -49,12 +49,13 @@ "@spotify/eslint-config-typescript": "^14.0.0", "@sucrase/jest-plugin": "^2.1.1", "@sucrase/webpack-loader": "^2.0.0", - "@swc/core": "1.2.205", - "@swc/jest": "^0.2.22", "@svgr/plugin-jsx": "6.3.x", "@svgr/plugin-svgo": "6.3.x", "@svgr/rollup": "6.3.x", "@svgr/webpack": "6.3.x", + "@swc/core": "1.2.205", + "@swc/helpers": "^0.4.7", + "@swc/jest": "^0.2.22", "@types/webpack-env": "^1.15.2", "@typescript-eslint/eslint-plugin": "^5.9.0", "@typescript-eslint/parser": "^5.9.0", @@ -70,7 +71,6 @@ "esbuild": "^0.14.10", "esbuild-loader": "^2.18.0", "eslint": "^8.6.0", - "sucrase": "^3.20.2", "eslint-config-prettier": "^8.3.0", "eslint-formatter-friendly": "^7.0.0", "eslint-plugin-deprecation": "^1.3.2", @@ -104,7 +104,6 @@ "postcss": "^8.1.0", "process": "^0.11.10", "react-dev-utils": "^12.0.0-next.60", - "react-hot-loader": "^4.13.0", "react-refresh": "^0.14.0", "recursive-readdir": "^2.2.2", "replace-in-file": "^6.0.0", @@ -116,6 +115,7 @@ "run-script-webpack-plugin": "^0.1.0", "semver": "^7.3.2", "style-loader": "^3.3.1", + "sucrase": "^3.20.2", "swc-loader": "^0.2.3", "tar": "^6.1.2", "terser-webpack-plugin": "^5.1.3", diff --git a/packages/cli/src/lib/bundler/config.ts b/packages/cli/src/lib/bundler/config.ts index f98d72b02b..2aac38732d 100644 --- a/packages/cli/src/lib/bundler/config.ts +++ b/packages/cli/src/lib/bundler/config.ts @@ -157,7 +157,7 @@ export async function createConfig( }, devtool: isDev ? 'eval-cheap-module-source-map' : 'source-map', context: paths.targetPath, - entry: [require.resolve('react-hot-loader/patch'), paths.targetEntry], + entry: [paths.targetEntry], resolve: { extensions: ['.ts', '.tsx', '.mjs', '.js', '.jsx', '.json', '.wasm'], mainFields: ['browser', 'module', 'main'], diff --git a/packages/cli/src/lib/bundler/transforms.ts b/packages/cli/src/lib/bundler/transforms.ts index 9c3efd77a5..d1cf0e67b8 100644 --- a/packages/cli/src/lib/bundler/transforms.ts +++ b/packages/cli/src/lib/bundler/transforms.ts @@ -30,7 +30,7 @@ type TransformOptions = { }; export const transforms = (options: TransformOptions): Transforms => { - const { isDev } = options; + const { isDev, isBackend } = options; // This ensures that styles inserted from the style-loader and any // async style chunks are always given lower priority than JSS styles. @@ -58,6 +58,8 @@ export const transforms = (options: TransformOptions): Transforms => { loader: 'swc-loader', options: { jsc: { + target: 'es2019', + externalHelpers: !isBackend, parser: { syntax: 'typescript', tsx: true, @@ -82,6 +84,8 @@ export const transforms = (options: TransformOptions): Transforms => { loader: 'swc-loader', options: { jsc: { + target: 'es2019', + externalHelpers: !isBackend, parser: { syntax: 'ecmascript', jsx: true, diff --git a/yarn.lock b/yarn.lock index 9d580b537d..362d5f6e74 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6324,6 +6324,13 @@ "@swc/core-win32-ia32-msvc" "1.2.205" "@swc/core-win32-x64-msvc" "1.2.205" +"@swc/helpers@^0.4.7": + version "0.4.7" + resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.7.tgz#25a32e462e799a5a102eb9c241f73bbc4cb806a7" + integrity sha512-jJKr/2JOivCQxb5Xpli3asedRLH34QgJ3G+7gm6CoCOwt/LDDX9g67OuxvjFOiYZfngWYB66ZbjU6cUNtQdavg== + dependencies: + tslib "^2.4.0" + "@swc/jest@^0.2.22": version "0.2.22" resolved "https://registry.npmjs.org/@swc/jest/-/jest-0.2.22.tgz#70d02ac648c21a442016d7a0aa485577335a4c9a" @@ -14455,7 +14462,7 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -global@^4.3.0, global@~4.4.0: +global@~4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== @@ -21581,7 +21588,7 @@ promzard@^0.3.0: dependencies: read "1" -prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -22076,20 +22083,6 @@ react-hook-form@^7.12.2, react-hook-form@^7.13.0: resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.32.2.tgz#58ec2ab0239ce97969baa2faa03ced13fae913ac" integrity sha512-F1A6n762xaRhvtQH5SkQQhMr19cCkHZYesTcKJJeNmrphiZp/cYFTIzC05FnQry0SspM54oPJ9tXFXlzya8VNQ== -react-hot-loader@^4.13.0: - version "4.13.0" - resolved "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.13.0.tgz#c27e9408581c2a678f5316e69c061b226dc6a202" - integrity sha512-JrLlvUPqh6wIkrK2hZDfOyq/Uh/WeVEr8nc7hkn2/3Ul0sx1Kr5y4kOGNacNRoj7RhwLNcQ3Udf1KJXrqc0ZtA== - dependencies: - fast-levenshtein "^2.0.6" - global "^4.3.0" - hoist-non-react-statics "^3.3.0" - loader-utils "^1.1.0" - prop-types "^15.6.1" - react-lifecycles-compat "^3.0.4" - shallowequal "^1.1.0" - source-map "^0.7.3" - react-icons@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/react-icons/-/react-icons-4.4.0.tgz#a13a8a20c254854e1ec9aecef28a95cdf24ef703"