build: bump rollup, remove cjs re-exports hack

This commit is contained in:
Evan You 2023-03-23 16:33:10 +08:00
parent aac163110f
commit 0587c70e9f
3 changed files with 45 additions and 92 deletions

View File

@ -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",

View File

@ -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

View File

@ -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.')
}
}
}
}