diff --git a/packages/vite/src/hbs.ts b/packages/vite/src/hbs.ts index a759f607b..7b6f799ca 100644 --- a/packages/vite/src/hbs.ts +++ b/packages/vite/src/hbs.ts @@ -3,12 +3,13 @@ import { createFilter } from '@rollup/pluginutils'; import type { PluginContext, ResolvedId } from 'rollup'; import type { Plugin } from 'vite'; -import { hbsToJS } from '@embroider/core'; +import { hbsToJS, ResolverLoader } from '@embroider/core'; import assertNever from 'assert-never'; import { parse as pathParse } from 'path'; import makeDebug from 'debug'; const debug = makeDebug('embroider:hbs-plugin'); +const resolverLoader = new ResolverLoader(process.cwd()); export function hbs(): Plugin { return { @@ -99,6 +100,24 @@ async function maybeSynthesizeComponentJS(context: PluginContext, source: string if (!templateResolution) { return null; } + + const resolvedId = templateResolution.id.split('?')[0]; + templateResolution.id = resolvedId; + + const pkg = resolverLoader.resolver.packageCache.ownerOfFile(resolvedId); + const isInComponents = pkg?.isV2App() && resolvedId.slice(pkg?.root.length).startsWith('/components'); + + if (resolvedId.endsWith('/template.hbs') || !isInComponents) { + return { + ...templateResolution, + meta: { + 'rollup-hbs-plugin': { + type: 'template', + }, + }, + }; + } + debug(`emitting template only component: %s`, templateResolution.id); // we're trying to resolve a JS module but only the corresponding HBS diff --git a/tests/vite-app/app/components/old/component.js b/tests/vite-app/app/components/old/component.js new file mode 100644 index 000000000..6e87f704f --- /dev/null +++ b/tests/vite-app/app/components/old/component.js @@ -0,0 +1,5 @@ +import Component from '@glimmer/component'; + +export default class extends Component { + message = 'hi'; +} diff --git a/tests/vite-app/app/components/old/template.hbs b/tests/vite-app/app/components/old/template.hbs new file mode 100644 index 000000000..6224387ee --- /dev/null +++ b/tests/vite-app/app/components/old/template.hbs @@ -0,0 +1 @@ +
hey {{@message}}
\ No newline at end of file diff --git a/tests/vite-app/app/templates/application.hbs b/tests/vite-app/app/templates/application.hbs index d28e8e4cc..d01955f70 100644 --- a/tests/vite-app/app/templates/application.hbs +++ b/tests/vite-app/app/templates/application.hbs @@ -1,6 +1,7 @@ {{page-title "ViteApp"}} + {{! Feel free to remove this! }}