diff --git a/package.json b/package.json index 474e355b2f0a12..ae2cd3c5d9a2d3 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@typescript-eslint/parser": "^5.8.1", "conventional-changelog-cli": "^2.2.2", "cross-env": "^7.0.3", - "esbuild": "0.14.3", + "esbuild": "^0.14.14", "eslint": "^8.5.0", "eslint-define-config": "^1.2.1", "eslint-plugin-node": "^11.1.0", diff --git a/packages/plugin-react/package.json b/packages/plugin-react/package.json index 3904a9fd79f94a..732e50aec8b0d9 100644 --- a/packages/plugin-react/package.json +++ b/packages/plugin-react/package.json @@ -15,7 +15,8 @@ "scripts": { "dev": "tsc -p . -w --incremental", "build": "rimraf dist && run-s build-bundle build-types", - "build-bundle": "esbuild src/index.ts --bundle --platform=node --target=node12 --external:@babel/* --external:@rollup/* --external:resolve --external:react-refresh/* --outfile=dist/index.js", + "build-bundle": "esbuild src/index.ts --bundle --platform=node --target=node12 --external:@babel/* --external:@rollup/* --external:resolve --external:react-refresh/* --outfile=dist/index.js && npm run patch-dist", + "patch-dist": "ts-node ../../scripts/patchEsbuildDist.ts dist/index.js viteReact", "build-types": "tsc -p . --emitDeclarationOnly --outDir temp && api-extractor run && rimraf temp", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s --commit-path . --lerna-package plugin-react", "release": "ts-node ../../scripts/release.ts" diff --git a/packages/plugin-react/src/index.ts b/packages/plugin-react/src/index.ts index dc7be2580f2753..7d3cd6efdd971e 100644 --- a/packages/plugin-react/src/index.ts +++ b/packages/plugin-react/src/index.ts @@ -366,5 +366,8 @@ function loadPlugin(path: string): Promise { } // overwrite for cjs require('...')() usage -module.exports = viteReact -viteReact['default'] = viteReact +// The following lines are inserted by scripts/patchEsbuildDist.ts, +// this doesn't bundle correctly after esbuild 0.14.4 +// +// module.exports = viteReact +// viteReact['default'] = viteReact diff --git a/packages/plugin-react/src/jsx-runtime/restore-jsx.ts b/packages/plugin-react/src/jsx-runtime/restore-jsx.ts index 5cc7042a32c55e..268153f4ba5d45 100644 --- a/packages/plugin-react/src/jsx-runtime/restore-jsx.ts +++ b/packages/plugin-react/src/jsx-runtime/restore-jsx.ts @@ -57,7 +57,8 @@ export async function restoreJSX( parserOpts: { plugins: ['jsx'] }, - plugins: [await babelRestoreJSX] + // @ts-ignore + plugins: [(await babelRestoreJSX).default] }) return [result?.ast, isCommonJS] diff --git a/packages/plugin-vue/package.json b/packages/plugin-vue/package.json index 046c84ce8658da..02dee5e0156d25 100644 --- a/packages/plugin-vue/package.json +++ b/packages/plugin-vue/package.json @@ -13,7 +13,8 @@ "dev-types": "tsc -p . -w --incremental --emitDeclarationOnly", "dev-watch": "esbuild src/index.ts --watch --bundle --platform=node --target=node12 --external:@vue/compiler-sfc --external:vue/compiler-sfc --external:vite --outfile=dist/index.js", "build": "rimraf dist && run-s build-bundle build-types", - "build-bundle": "esbuild src/index.ts --bundle --platform=node --target=node12 --external:@vue/compiler-sfc --external:vue/compiler-sfc --external:vite --outfile=dist/index.js", + "build-bundle": "esbuild src/index.ts --bundle --platform=node --target=node12 --external:@vue/compiler-sfc --external:vue/compiler-sfc --external:vite --outfile=dist/index.js & npm run patch-dist", + "patch-dist": "ts-node ../../scripts/patchEsbuildDist.ts dist/index.js vuePlugin", "build-types": "tsc -p . --emitDeclarationOnly --outDir temp && api-extractor run && rimraf temp", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s --commit-path . --lerna-package plugin-vue", "release": "ts-node ../../scripts/release.ts" diff --git a/packages/plugin-vue/src/index.ts b/packages/plugin-vue/src/index.ts index d9b1e603e6d019..8467565989d8e7 100644 --- a/packages/plugin-vue/src/index.ts +++ b/packages/plugin-vue/src/index.ts @@ -244,5 +244,8 @@ export default function vuePlugin(rawOptions: Options = {}): Plugin { } // overwrite for cjs require('...')() usage -module.exports = vuePlugin -vuePlugin['default'] = vuePlugin +// The following lines are inserted by scripts/patchEsbuildDist.ts, +// this doesn't bundle correctly after esbuild 0.14.4 +// +// module.exports = vuePlugin +// vuePlugin['default'] = vuePlugin diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed08c3a7ebae4f..76350da85e3d45 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,7 +18,7 @@ importers: '@typescript-eslint/parser': ^5.8.1 conventional-changelog-cli: ^2.2.2 cross-env: ^7.0.3 - esbuild: 0.14.3 + esbuild: ^0.14.14 eslint: ^8.5.0 eslint-define-config: ^1.2.1 eslint-plugin-node: ^11.1.0 @@ -54,7 +54,7 @@ importers: '@typescript-eslint/parser': 5.8.1_eslint@8.5.0+typescript@4.5.4 conventional-changelog-cli: 2.2.2 cross-env: 7.0.3 - esbuild: 0.14.3 + esbuild: 0.14.14 eslint: 8.5.0 eslint-define-config: 1.2.1 eslint-plugin-node: 11.1.0_eslint@8.5.0 @@ -74,7 +74,7 @@ importers: semver: 7.3.5 simple-git-hooks: 2.7.0 sirv: 2.0.0 - ts-jest: 27.1.2_1b5a1be2010a86e622f02a11eaeb730f + ts-jest: 27.1.2_90081f5a53d206d8f41f49dc2a78a270 ts-node: 10.4.0_00264fd83560919cd06c986889baae0a typescript: 4.5.4 vite: link:packages/vite @@ -3999,11 +3999,28 @@ packages: ext: 1.6.0 dev: false + /esbuild-android-arm64/0.14.14: + resolution: {integrity: sha512-be/Uw6DdpQiPfula1J4bdmA+wtZ6T3BRCZsDMFB5X+k0Gp8TIh9UvmAcqvKNnbRAafSaXG3jPCeXxDKqnc8hFQ==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /esbuild-android-arm64/0.14.3: resolution: {integrity: sha512-v/vdnGJiSGWOAXzg422T9qb4S+P3tOaYtc5n3FDR27Bh3/xQDS7PdYz/yY7HhOlVp0eGwWNbPHEi8FcEhXjsuw==} cpu: [arm64] os: [android] requiresBuild: true + dev: false + optional: true + + /esbuild-darwin-64/0.14.14: + resolution: {integrity: sha512-BEexYmjWafcISK8cT6O98E3TfcLuZL8DKuubry6G54n2+bD4GkoRD6HYUOnCkfl2p7jodA+s4369IjSFSWjtHg==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true /esbuild-darwin-64/0.14.3: @@ -4011,6 +4028,15 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: false + optional: true + + /esbuild-darwin-arm64/0.14.14: + resolution: {integrity: sha512-tnBKm41pDOB1GtZ8q/w26gZlLLRzVmP8fdsduYjvM+yFD7E2DLG4KbPAqFMWm4Md9B+DitBglP57FY7AznxbTg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true /esbuild-darwin-arm64/0.14.3: @@ -4018,6 +4044,15 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: false + optional: true + + /esbuild-freebsd-64/0.14.14: + resolution: {integrity: sha512-Q9Rx6sgArOHalQtNwAaIzJ6dnQ8A+I7f/RsQsdkS3JrdzmnlFo8JEVofTmwVQLoIop7OKUqIVOGP4PoQcwfVMA==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true optional: true /esbuild-freebsd-64/0.14.3: @@ -4025,6 +4060,15 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: false + optional: true + + /esbuild-freebsd-arm64/0.14.14: + resolution: {integrity: sha512-TJvq0OpLM7BkTczlyPIphcvnwrQwQDG1HqxzoYePWn26SMUAlt6wrLnEvxdbXAvNvDLVzG83kA+JimjK7aRNBA==} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true optional: true /esbuild-freebsd-arm64/0.14.3: @@ -4032,6 +4076,15 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true + dev: false + optional: true + + /esbuild-linux-32/0.14.14: + resolution: {integrity: sha512-h/CrK9Baimt5VRbu8gqibWV7e1P9l+mkanQgyOgv0Ng3jHT1NVFC9e6rb1zbDdaJVmuhWX5xVliUA5bDDCcJeg==} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true optional: true /esbuild-linux-32/0.14.3: @@ -4039,6 +4092,15 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true + dev: false + optional: true + + /esbuild-linux-64/0.14.14: + resolution: {integrity: sha512-IC+wAiIg/egp5OhQp4W44D9PcBOH1b621iRn1OXmlLzij9a/6BGr9NMIL4CRwz4j2kp3WNZu5sT473tYdynOuQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true /esbuild-linux-64/0.14.3: @@ -4046,6 +4108,15 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: false + optional: true + + /esbuild-linux-arm/0.14.14: + resolution: {integrity: sha512-gxpOaHOPwp7zSmcKYsHrtxabScMqaTzfSQioAMUaB047YiMuDBzqVcKBG8OuESrYkGrL9DDljXr/mQNg7pbdaQ==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true /esbuild-linux-arm/0.14.3: @@ -4053,6 +4124,15 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: false + optional: true + + /esbuild-linux-arm64/0.14.14: + resolution: {integrity: sha512-6QVul3RI4M5/VxVIRF/I5F+7BaxzR3DfNGoqEVSCZqUbgzHExPn+LXr5ly1C7af2Kw4AHpo+wDqx8A4ziP9avw==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true /esbuild-linux-arm64/0.14.3: @@ -4060,6 +4140,15 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: false + optional: true + + /esbuild-linux-mips64le/0.14.14: + resolution: {integrity: sha512-4Jl5/+xoINKbA4cesH3f4R+q0vltAztZ6Jm8YycS8lNhN1pgZJBDxWfI6HUMIAdkKlIpR1PIkA9aXQgZ8sxFAg==} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true optional: true /esbuild-linux-mips64le/0.14.3: @@ -4067,6 +4156,15 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true + dev: false + optional: true + + /esbuild-linux-ppc64le/0.14.14: + resolution: {integrity: sha512-BitW37GxeebKxqYNl4SVuSdnIJAzH830Lr6Mkq3pBHXtzQay0vK+IeOR/Ele1GtNVJ+/f8wYM53tcThkv5SC5w==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true optional: true /esbuild-linux-ppc64le/0.14.3: @@ -4074,6 +4172,23 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: false + optional: true + + /esbuild-linux-s390x/0.14.14: + resolution: {integrity: sha512-vLj6p76HOZG3wfuTr5MyO3qW5iu8YdhUNxuY+tx846rPo7GcKtYSPMusQjeVEfZlJpSYoR+yrNBBxq+qVF9zrw==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.14.14: + resolution: {integrity: sha512-fn8looXPQhpVqUyCBWUuPjesH+yGIyfbIQrLKG05rr1Kgm3rZD/gaYrd3Wpmf5syVZx70pKZPvdHp8OTA+y7cQ==} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true optional: true /esbuild-netbsd-64/0.14.3: @@ -4081,6 +4196,15 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true + dev: false + optional: true + + /esbuild-openbsd-64/0.14.14: + resolution: {integrity: sha512-HdAnJ399pPff3SKbd8g+P4o5znseni5u5n5rJ6Z7ouqOdgbOwHe2ofZbMow17WMdNtz1IyOZk2Wo9Ve6/lZ4Rg==} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true optional: true /esbuild-openbsd-64/0.14.3: @@ -4088,6 +4212,15 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true + dev: false + optional: true + + /esbuild-sunos-64/0.14.14: + resolution: {integrity: sha512-bmDHa99ulsGnYlh/xjBEfxoGuC8CEG5OWvlgD+pF7bKKiVTbtxqVCvOGEZeoDXB+ja6AvHIbPxrEE32J+m5nqQ==} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true optional: true /esbuild-sunos-64/0.14.3: @@ -4095,6 +4228,15 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true + dev: false + optional: true + + /esbuild-windows-32/0.14.14: + resolution: {integrity: sha512-6tVooQcxJCNenPp5GHZBs/RLu31q4B+BuF4MEoRxswT+Eq2JGF0ZWDRQwNKB8QVIo3t6Svc5wNGez+CwKNQjBg==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true /esbuild-windows-32/0.14.3: @@ -4102,6 +4244,15 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: false + optional: true + + /esbuild-windows-64/0.14.14: + resolution: {integrity: sha512-kl3BdPXh0/RD/dad41dtzj2itMUR4C6nQbXQCyYHHo4zoUoeIXhpCrSl7BAW1nv5EFL8stT1V+TQVXGZca5A2A==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true /esbuild-windows-64/0.14.3: @@ -4109,6 +4260,15 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: false + optional: true + + /esbuild-windows-arm64/0.14.14: + resolution: {integrity: sha512-dCm1wTOm6HIisLanmybvRKvaXZZo4yEVrHh1dY0v582GThXJOzuXGja1HIQgV09RpSHYRL3m4KoUBL00l6SWEg==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true /esbuild-windows-arm64/0.14.3: @@ -4116,8 +4276,34 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: false optional: true + /esbuild/0.14.14: + resolution: {integrity: sha512-aiK4ddv+uui0k52OqSHu4xxu+SzOim7Rlz4i25pMEiC8rlnGU0HJ9r+ZMfdWL5bzifg+nhnn7x4NSWTeehYblg==} + hasBin: true + requiresBuild: true + optionalDependencies: + esbuild-android-arm64: 0.14.14 + esbuild-darwin-64: 0.14.14 + esbuild-darwin-arm64: 0.14.14 + esbuild-freebsd-64: 0.14.14 + esbuild-freebsd-arm64: 0.14.14 + esbuild-linux-32: 0.14.14 + esbuild-linux-64: 0.14.14 + esbuild-linux-arm: 0.14.14 + esbuild-linux-arm64: 0.14.14 + esbuild-linux-mips64le: 0.14.14 + esbuild-linux-ppc64le: 0.14.14 + esbuild-linux-s390x: 0.14.14 + esbuild-netbsd-64: 0.14.14 + esbuild-openbsd-64: 0.14.14 + esbuild-sunos-64: 0.14.14 + esbuild-windows-32: 0.14.14 + esbuild-windows-64: 0.14.14 + esbuild-windows-arm64: 0.14.14 + dev: true + /esbuild/0.14.3: resolution: {integrity: sha512-zyEC5hkguW2oieXRXp8VJzQdcO/1FxCS5GjzqOHItRlojXnx/cTavsrkxdWvBH9li2lUq0bN+LeeVEmyCwiR/Q==} hasBin: true @@ -4140,6 +4326,7 @@ packages: esbuild-windows-32: 0.14.3 esbuild-windows-64: 0.14.3 esbuild-windows-arm64: 0.14.3 + dev: false /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -8434,7 +8621,7 @@ packages: utf8-byte-length: 1.0.4 dev: true - /ts-jest/27.1.2_1b5a1be2010a86e622f02a11eaeb730f: + /ts-jest/27.1.2_90081f5a53d206d8f41f49dc2a78a270: resolution: {integrity: sha512-eSOiJOWq6Hhs6Khzk5wKC5sgWIXgXqOCiIl1+3lfnearu58Hj4QpE5tUhQcA3xtZrELbcvAGCsd6HB8OsaVaTA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -8457,7 +8644,7 @@ packages: dependencies: '@types/jest': 27.0.3 bs-logger: 0.2.6 - esbuild: 0.14.3 + esbuild: 0.14.14 fast-json-stable-stringify: 2.1.0 jest: 27.4.5_ts-node@10.4.0 jest-util: 27.4.2 diff --git a/scripts/patchEsbuildDist.ts b/scripts/patchEsbuildDist.ts new file mode 100644 index 00000000000000..70ef846af1bcbb --- /dev/null +++ b/scripts/patchEsbuildDist.ts @@ -0,0 +1,31 @@ +// esbuild 0.14.4 https://github.com/evanw/esbuild/blob/master/CHANGELOG.md#0144 introduced a +// change that breaks the "overwrite for cjs require('...')() usage" hack used in plugin-vue +// and plugin-react. For the moment, we can remove the extra exports code added in 0.14.4 to +// continue using it. + +import { bold, red } from 'picocolors' +import { readFileSync, writeFileSync } from 'fs' + +const indexPath = process.argv[2] +const varName = process.argv[3] + +let code = readFileSync(indexPath, 'utf-8') + +const moduleExportsLine = `module.exports = __toCommonJS(src_exports);` + +if (code.includes(moduleExportsLine)) { + // overwrite for cjs require('...')() usage + code = code.replace( + moduleExportsLine, + `module.exports = ${varName}; +${varName}['default'] = ${varName};` + ) + + writeFileSync(indexPath, code) + + console.log( + bold(`${indexPath} patched with overwrite for cjs require('...')()`) + ) +} else { + console.error(red(`${indexPath} post-esbuild bundling patch failed`)) +}