mirror of https://github.com/vuejs/core.git
fix(build): ensure correct typing for node esm
This commit is contained in:
parent
fecd5c4044
commit
d621d4c646
|
@ -0,0 +1 @@
|
|||
export * from '@vue/compiler-sfc'
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"main": "index.js",
|
||||
"module": "index.mjs",
|
||||
"types": "index.d.ts"
|
||||
"module": "index.mjs"
|
||||
}
|
||||
|
|
|
@ -21,22 +21,35 @@
|
|||
],
|
||||
"exports": {
|
||||
".": {
|
||||
"types": "./dist/vue.d.ts",
|
||||
"import": {
|
||||
"types": "./dist/vue.d.mts",
|
||||
"node": "./index.mjs",
|
||||
"default": "./dist/vue.runtime.esm-bundler.js"
|
||||
},
|
||||
"require": "./index.js"
|
||||
"require": {
|
||||
"types": "./dist/vue.d.ts",
|
||||
"default": "./index.js"
|
||||
}
|
||||
},
|
||||
"./server-renderer": {
|
||||
"types": "./server-renderer/index.d.ts",
|
||||
"import": "./server-renderer/index.mjs",
|
||||
"require": "./server-renderer/index.js"
|
||||
"import": {
|
||||
"types": "./server-renderer/index.d.mts",
|
||||
"default": "./server-renderer/index.mjs"
|
||||
},
|
||||
"require": {
|
||||
"types": "./server-renderer/index.d.ts",
|
||||
"default": "./server-renderer/index.js"
|
||||
}
|
||||
},
|
||||
"./compiler-sfc": {
|
||||
"types": "./compiler-sfc/index.d.ts",
|
||||
"import": "./compiler-sfc/index.mjs",
|
||||
"require": "./compiler-sfc/index.js"
|
||||
"import": {
|
||||
"types": "./compiler-sfc/index.d.mts",
|
||||
"default": "./compiler-sfc/index.mjs"
|
||||
},
|
||||
"require": {
|
||||
"types": "./compiler-sfc/index.d.ts",
|
||||
"default": "./compiler-sfc/index.js"
|
||||
}
|
||||
},
|
||||
"./jsx-runtime": {
|
||||
"types": "./jsx-runtime/index.d.ts",
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
export * from '@vue/server-renderer'
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"main": "index.js",
|
||||
"module": "index.mjs",
|
||||
"types": "index.d.ts"
|
||||
}
|
||||
"module": "index.mjs"
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// @ts-check
|
||||
import { parse } from '@babel/parser'
|
||||
import { existsSync, readdirSync, readFileSync } from 'fs'
|
||||
import { existsSync, readdirSync, readFileSync, writeFileSync } from 'fs'
|
||||
import MagicString from 'magic-string'
|
||||
import dts from 'rollup-plugin-dts'
|
||||
import { walk } from 'estree-walker'
|
||||
|
@ -25,7 +25,7 @@ export default targetPackages.map(pkg => {
|
|||
file: `packages/${pkg}/dist/${pkg}.d.ts`,
|
||||
format: 'es'
|
||||
},
|
||||
plugins: [dts(), patchTypes(pkg)],
|
||||
plugins: [dts(), patchTypes(pkg), ...(pkg === 'vue' ? [copyMts()] : [])],
|
||||
onwarn(warning, warn) {
|
||||
// during dts rollup, everything is externalized by default
|
||||
if (
|
||||
|
@ -232,3 +232,24 @@ function patchTypes(pkg) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* According to https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-7.html#packagejson-exports-imports-and-self-referencing
|
||||
* the only way to correct provide types for both Node ESM and CJS is to have
|
||||
* two separate declaration files, so we need to copy vue.d.ts to vue.d.mts
|
||||
* upon build.
|
||||
*
|
||||
* @returns {import('rollup').Plugin}
|
||||
*/
|
||||
function copyMts() {
|
||||
return {
|
||||
name: 'copy-vue-mts',
|
||||
writeBundle(_, bundle) {
|
||||
writeFileSync(
|
||||
'packages/vue/dist/vue.d.mts',
|
||||
// @ts-ignore
|
||||
bundle['vue.d.ts'].code
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue