mirror of https://github.com/vuejs/core.git
fix(compiler-sfc): use options module name if options provide runtimeModuleName options (#10457)
close #10454
This commit is contained in:
parent
f66a75ea75
commit
e76d7430aa
|
@ -1362,3 +1362,24 @@ return { get foo() { return foo } }
|
||||||
|
|
||||||
}"
|
}"
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`compileScript > should care about runtimeModuleName 1`] = `
|
||||||
|
"import { withAsyncContext as _withAsyncContext } from "npm:vue"
|
||||||
|
|
||||||
|
export default {
|
||||||
|
async setup(__props, { expose: __expose }) {
|
||||||
|
__expose();
|
||||||
|
|
||||||
|
let __temp, __restore
|
||||||
|
|
||||||
|
;(
|
||||||
|
([__temp,__restore] = _withAsyncContext(() => Promise.resolve(1))),
|
||||||
|
await __temp,
|
||||||
|
__restore()
|
||||||
|
)
|
||||||
|
|
||||||
|
return { }
|
||||||
|
}
|
||||||
|
|
||||||
|
}"
|
||||||
|
`;
|
||||||
|
|
|
@ -1472,3 +1472,26 @@ describe('SFC genDefaultAs', () => {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('compileScript', () => {
|
||||||
|
test('should care about runtimeModuleName', () => {
|
||||||
|
const { content } = compile(
|
||||||
|
`
|
||||||
|
<script setup>
|
||||||
|
await Promise.resolve(1)
|
||||||
|
</script>
|
||||||
|
`,
|
||||||
|
{
|
||||||
|
templateOptions: {
|
||||||
|
compilerOptions: {
|
||||||
|
runtimeModuleName: 'npm:vue',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
)
|
||||||
|
expect(content).toMatch(
|
||||||
|
`import { withAsyncContext as _withAsyncContext } from "npm:vue"\n`,
|
||||||
|
)
|
||||||
|
assertCode(content)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
|
@ -989,10 +989,15 @@ export function compileScript(
|
||||||
|
|
||||||
// 11. finalize Vue helper imports
|
// 11. finalize Vue helper imports
|
||||||
if (ctx.helperImports.size > 0) {
|
if (ctx.helperImports.size > 0) {
|
||||||
|
const runtimeModuleName =
|
||||||
|
options.templateOptions?.compilerOptions?.runtimeModuleName
|
||||||
|
const importSrc = runtimeModuleName
|
||||||
|
? JSON.stringify(runtimeModuleName)
|
||||||
|
: `'vue'`
|
||||||
ctx.s.prepend(
|
ctx.s.prepend(
|
||||||
`import { ${[...ctx.helperImports]
|
`import { ${[...ctx.helperImports]
|
||||||
.map(h => `${h} as _${h}`)
|
.map(h => `${h} as _${h}`)
|
||||||
.join(', ')} } from 'vue'\n`,
|
.join(', ')} } from ${importSrc}\n`,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue