diff --git a/packages/app/src/sandbox/eval/presets/vue-cli/index.ts b/packages/app/src/sandbox/eval/presets/vue-cli/index.ts index e048690b241..38b195a839e 100644 --- a/packages/app/src/sandbox/eval/presets/vue-cli/index.ts +++ b/packages/app/src/sandbox/eval/presets/vue-cli/index.ts @@ -63,9 +63,8 @@ export default function initialize() { try { const vueModule = await manager.resolveTranspiledModule('vue', '/'); - if (!vueModule.source) { - await vueModule.transpile(manager); - } + await vueModule.transpileTree(manager); + const Vue = vueModule.evaluate(manager); if (Vue) { diff --git a/packages/sandpack-core/src/manager.ts b/packages/sandpack-core/src/manager.ts index 3f3bba733dc..7230fcfa195 100644 --- a/packages/sandpack-core/src/manager.ts +++ b/packages/sandpack-core/src/manager.ts @@ -626,11 +626,11 @@ export default class Manager implements IEvaluator { } verifyTreeTranspiled() { - return Promise.all( - this.getTranspiledModules() - .filter(tModule => tModule.shouldTranspile()) - .map(tModule => tModule.transpile(this)) - ); + const promises: Promise[] = []; + for (const tModule of this.getTranspiledModules()) { + promises.push(tModule.transpile(this)); + } + return Promise.all(promises); } clearCompiledCache() { diff --git a/packages/sandpack-core/src/transpiled-module/transpiled-module.ts b/packages/sandpack-core/src/transpiled-module/transpiled-module.ts index bdf04c9d7de..fb2bba79081 100644 --- a/packages/sandpack-core/src/transpiled-module/transpiled-module.ts +++ b/packages/sandpack-core/src/transpiled-module/transpiled-module.ts @@ -749,6 +749,13 @@ export class TranspiledModule { ); } + /** Transpile current module and ensure the surrounding tree (dependencies and initiators) are also transpiled */ + async transpileTree(manager: Manager): Promise { + await this.transpile(manager); + await manager.verifyTreeTranspiled(); + return this; + } + logWarnings = () => { if (this.warnings.length) { this.warnings.forEach(warning => {