diff --git a/package.json b/package.json index 0e2377e73..7a2410118 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "prettier": "^2.7.1", "pug": "^3.0.1", "puppeteer": "^19.6.3", - "rollup": "~3.10.0", + "rollup": "^3.20.0", "rollup-plugin-dts": "^5.1.1", "rollup-plugin-esbuild": "^5.0.0", "rollup-plugin-node-builtins": "^2.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3f5ba6866..e9030bd62 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,7 +38,7 @@ importers: prettier: ^2.7.1 pug: ^3.0.1 puppeteer: ^19.6.3 - rollup: ~3.10.0 + rollup: ^3.20.0 rollup-plugin-dts: ^5.1.1 rollup-plugin-esbuild: ^5.0.0 rollup-plugin-node-builtins: ^2.1.2 @@ -57,12 +57,12 @@ importers: '@babel/parser': 7.20.15 '@babel/types': 7.20.7 '@esbuild-plugins/node-modules-polyfill': 0.1.4_esbuild@0.17.5 - '@rollup/plugin-alias': 4.0.3_rollup@3.10.1 - '@rollup/plugin-commonjs': 23.0.7_rollup@3.10.1 - '@rollup/plugin-json': 5.0.2_rollup@3.10.1 - '@rollup/plugin-node-resolve': 15.0.1_rollup@3.10.1 - '@rollup/plugin-replace': 5.0.2_rollup@3.10.1 - '@rollup/plugin-terser': 0.1.0_rollup@3.10.1 + '@rollup/plugin-alias': 4.0.3_rollup@3.20.0 + '@rollup/plugin-commonjs': 23.0.7_rollup@3.20.0 + '@rollup/plugin-json': 5.0.2_rollup@3.20.0 + '@rollup/plugin-node-resolve': 15.0.1_rollup@3.20.0 + '@rollup/plugin-replace': 5.0.2_rollup@3.20.0 + '@rollup/plugin-terser': 0.1.0_rollup@3.20.0 '@types/hash-sum': 1.0.0 '@types/node': 16.18.11 '@typescript-eslint/parser': 5.50.0_4vsywjlpuriuw3tl5oq6zy5a64 @@ -88,12 +88,12 @@ importers: prettier: 2.8.3 pug: 3.0.2 puppeteer: 19.6.3 - rollup: 3.10.1 - rollup-plugin-dts: 5.1.1_3md6k4iljipbt7fzll35epzd3m - rollup-plugin-esbuild: 5.0.0_vnogblvxo6egyqdp3slxc3bipy + rollup: 3.20.0 + rollup-plugin-dts: 5.1.1_pn5zetjg24cqcolt42iry5qj6a + rollup-plugin-esbuild: 5.0.0_iczynsknn7ny3sc5doji76wu6a rollup-plugin-node-builtins: 2.1.2 rollup-plugin-node-globals: 1.4.0 - rollup-plugin-polyfill-node: 0.11.0_rollup@3.10.1 + rollup-plugin-polyfill-node: 0.11.0_rollup@3.20.0 semver: 7.3.8 serve: 12.0.1 simple-git-hooks: 2.8.1 @@ -1023,7 +1023,7 @@ packages: fastq: 1.15.0 dev: true - /@rollup/plugin-alias/4.0.3_rollup@3.10.1: + /@rollup/plugin-alias/4.0.3_rollup@3.20.0: resolution: {integrity: sha512-ZuDWE1q4PQDhvm/zc5Prun8sBpLJy41DMptYrS6MhAy9s9kL/doN1613BWfEchGVfKxzliJ3BjbOPizXX38DbQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1032,11 +1032,11 @@ packages: rollup: optional: true dependencies: - rollup: 3.10.1 + rollup: 3.20.0 slash: 4.0.0 dev: true - /@rollup/plugin-commonjs/23.0.7_rollup@3.10.1: + /@rollup/plugin-commonjs/23.0.7_rollup@3.20.0: resolution: {integrity: sha512-hsSD5Qzyuat/swzrExGG5l7EuIlPhwTsT7KwKbSCQzIcJWjRxiimi/0tyMYY2bByitNb3i1p+6JWEDGa0NvT0Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1045,16 +1045,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.10.1 + '@rollup/pluginutils': 5.0.2_rollup@3.20.0 commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.10.1 + rollup: 3.20.0 dev: true - /@rollup/plugin-inject/5.0.3_rollup@3.10.1: + /@rollup/plugin-inject/5.0.3_rollup@3.20.0: resolution: {integrity: sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1063,13 +1063,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.10.1 + '@rollup/pluginutils': 5.0.2_rollup@3.20.0 estree-walker: 2.0.2 magic-string: 0.27.0 - rollup: 3.10.1 + rollup: 3.20.0 dev: true - /@rollup/plugin-json/5.0.2_rollup@3.10.1: + /@rollup/plugin-json/5.0.2_rollup@3.20.0: resolution: {integrity: sha512-D1CoOT2wPvadWLhVcmpkDnesTzjhNIQRWLsc3fA49IFOP2Y84cFOOJ+nKGYedvXHKUsPeq07HR4hXpBBr+CHlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1078,11 +1078,11 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.10.1 - rollup: 3.10.1 + '@rollup/pluginutils': 5.0.2_rollup@3.20.0 + rollup: 3.20.0 dev: true - /@rollup/plugin-node-resolve/15.0.1_rollup@3.10.1: + /@rollup/plugin-node-resolve/15.0.1_rollup@3.20.0: resolution: {integrity: sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1091,16 +1091,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.10.1 + '@rollup/pluginutils': 5.0.2_rollup@3.20.0 '@types/resolve': 1.20.2 deepmerge: 4.3.0 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.1 - rollup: 3.10.1 + rollup: 3.20.0 dev: true - /@rollup/plugin-replace/5.0.2_rollup@3.10.1: + /@rollup/plugin-replace/5.0.2_rollup@3.20.0: resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1109,12 +1109,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.10.1 + '@rollup/pluginutils': 5.0.2_rollup@3.20.0 magic-string: 0.27.0 - rollup: 3.10.1 + rollup: 3.20.0 dev: true - /@rollup/plugin-terser/0.1.0_rollup@3.10.1: + /@rollup/plugin-terser/0.1.0_rollup@3.20.0: resolution: {integrity: sha512-N2KK+qUfHX2hBzVzM41UWGLrEmcjVC37spC8R3c9mt3oEDFKh3N2e12/lLp9aVSt86veR0TQiCNQXrm8C6aiUQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1123,11 +1123,11 @@ packages: rollup: optional: true dependencies: - rollup: 3.10.1 + rollup: 3.20.0 terser: 5.16.2 dev: true - /@rollup/pluginutils/5.0.2_rollup@3.10.1: + /@rollup/pluginutils/5.0.2_rollup@3.20.0: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1139,7 +1139,7 @@ packages: '@types/estree': 1.0.0 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.10.1 + rollup: 3.20.0 dev: true /@tootallnate/once/2.0.0: @@ -5334,7 +5334,7 @@ packages: inherits: 2.0.4 dev: true - /rollup-plugin-dts/5.1.1_3md6k4iljipbt7fzll35epzd3m: + /rollup-plugin-dts/5.1.1_pn5zetjg24cqcolt42iry5qj6a: resolution: {integrity: sha512-zpgo52XmnLg8w4k3MScinFHZK1+ro6r7uVe34fJ0Ee8AM45FvgvTuvfWWaRgIpA4pQ1BHJuu2ospncZhkcJVeA==} engines: {node: '>=v14'} peerDependencies: @@ -5342,26 +5342,26 @@ packages: typescript: ^4.1 dependencies: magic-string: 0.27.0 - rollup: 3.10.1 + rollup: 3.20.0 typescript: 4.9.5 optionalDependencies: '@babel/code-frame': 7.18.6 dev: true - /rollup-plugin-esbuild/5.0.0_vnogblvxo6egyqdp3slxc3bipy: + /rollup-plugin-esbuild/5.0.0_iczynsknn7ny3sc5doji76wu6a: resolution: {integrity: sha512-1cRIOHAPh8WQgdQQyyvFdeOdxuiyk+zB5zJ5+YOwrZP4cJ0MT3Fs48pQxrZeyZHcn+klFherytILVfE4aYrneg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} peerDependencies: esbuild: '>=0.10.1' rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.10.1 + '@rollup/pluginutils': 5.0.2_rollup@3.20.0 debug: 4.3.4 es-module-lexer: 1.1.0 esbuild: 0.17.5 joycon: 3.1.1 jsonc-parser: 3.2.0 - rollup: 3.10.1 + rollup: 3.20.0 transitivePeerDependencies: - supports-color dev: true @@ -5401,13 +5401,13 @@ packages: rollup-plugin-inject: 3.0.2 dev: true - /rollup-plugin-polyfill-node/0.11.0_rollup@3.10.1: + /rollup-plugin-polyfill-node/0.11.0_rollup@3.20.0: resolution: {integrity: sha512-5t+qhq4LAQKQBgbPOQJEoxxGzU5b+zLfvzpUAGy9u0MCMs8y+mrjUAv8+xrkWdxnwXQwJtjmCMnA9lCflsMzNw==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 dependencies: - '@rollup/plugin-inject': 5.0.3_rollup@3.10.1 - rollup: 3.10.1 + '@rollup/plugin-inject': 5.0.3_rollup@3.20.0 + rollup: 3.20.0 dev: true /rollup-pluginutils/2.8.2: @@ -5416,8 +5416,8 @@ packages: estree-walker: 0.6.1 dev: true - /rollup/3.10.1: - resolution: {integrity: sha512-3Er+yel3bZbZX1g2kjVM+FW+RUWDxbG87fcqFM5/9HbPCTpbVp6JOLn7jlxnNlbu7s/N/uDA4EV/91E2gWnxzw==} + /rollup/3.20.0: + resolution: {integrity: sha512-YsIfrk80NqUDrxrjWPXUa7PWvAfegZEXHuPsEZg58fGCdjL1I9C1i/NaG+L+27kxxwkrG/QEDEQc8s/ynXWWGQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -6247,7 +6247,7 @@ packages: esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 - rollup: 3.10.1 + rollup: 3.20.0 optionalDependencies: fsevents: 2.3.2 dev: true @@ -6281,7 +6281,7 @@ packages: esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 - rollup: 3.10.1 + rollup: 3.20.0 terser: 5.16.2 optionalDependencies: fsevents: 2.3.2 diff --git a/rollup.config.js b/rollup.config.js index 7645a0221..21ee72b4e 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -270,10 +270,6 @@ function createConfig(format, output, plugins = []) { ] : [] - if (format === 'cjs') { - nodePlugins.push(cjsReExportsPatchPlugin()) - } - return nodePlugins } @@ -339,46 +335,3 @@ function createMinifiedConfig(format) { ] ) } - -// temporary patch for https://github.com/nodejs/cjs-module-lexer/issues/79 -// -// When importing a cjs module from esm, Node.js uses cjs-module-lexer to -// detect * re-exports from other packages. However, the detection logic is -// fragile and breaks when Rollup generates different code for the re-exports. -// We were locked on an old version of Rollup because of this. -// -// The latest versions of Node ships an updated version of cjs-module-lexer that -// has fixed https://github.com/nodejs/cjs-module-lexer/issues/38, however we -// still need to support older versions of Node that does not have the latest -// version of cjs-module-lexer (Node < 14.18) -// -// At the same time, we want to upgrade to Rollup 3 so we are not forever locked -// on an old version of Rollup. -// -// What this patch does: -// 1. Rewrite the for...in loop to Object.keys() so cjs-module-lexer can find it -// The for...in loop is only used when output.externalLiveBindings is set to -// false, and we do want to set it to false to avoid perf costs during SSR. -// 2. Also remove exports.hasOwnProperty check, which breaks the detection in -// Node.js versions that -// -// TODO in the future, we should no longer rely on this if we inline all deps -// in the main `vue` package. -function cjsReExportsPatchPlugin() { - const matcher = - /for \(var k in (\w+)\) {(\s+if \(k !== 'default') && !exports.hasOwnProperty\(k\)(\) exports\[k\] = (?:\w+)\[k\];\s+)}/ - return { - name: 'patch-cjs-re-exports', - renderChunk(code, _, options) { - if (matcher.test(code)) { - return code.replace(matcher, (_, r1, r2, r3) => { - return `Object.keys(${r1}).forEach(function(k) {${r2}${r3}});` - }) - } else if (options.file.endsWith('packages/vue/dist/vue.cjs.js')) { - // make sure we don't accidentally miss the rewrite in case Rollup - // changes the output again. - throw new Error('cjs build re-exports rewrite failed.') - } - } - } -}