ember-cli-htmlbars icon indicating copy to clipboard operation
ember-cli-htmlbars copied to clipboard

app's TS files do not properly overwrite an addon's JS files

Open BoussonKarel opened this issue 2 years ago • 2 comments

I have the following example component in my addon:

my-addon/addon/components/example/index.ts

import templateOnly from '@ember/component/template-only';
export default templateOnly();
```hbs
**my-addon/addon/components/example/index.hbs**
Whatever
``` **my-addon/app/components/example/index.js** ```js export { default } from 'my-addon/components/loading'; ```

Then in my app I completely replace it with a new template AND "backing class" with some Glint because why not: my-app/app/components/index.ts

import templateOnlyComponent from '@ember/component/template-only';

interface LoadingSignature {
  Element: HTMLElement; // <i>
}

const LoadingComponent = templateOnlyComponent<LoadingSignature>();
export default LoadingComponent;

declare module '@glint/environment-ember-loose/registry' {
  export default interface Registry {
    Loading: typeof LoadingComponent;
  }
}

my-app/app/components/index.hbs

<div>Whatever</div>

This does not work and throws the following error: image

It does work when using a JS file to overwrite the component: my-app/app/components/index.js

// I have lost all my Glint stuff, because it's a JS file :'(
import templateOnlyComponent from '@ember/component/template-only';
const LoadingComponent = templateOnlyComponent();
export default LoadingComponent;

my-app/app/components/index.hbs

<div>Whatever</div>

BoussonKarel avatar Aug 24 '23 08:08 BoussonKarel

I think this is a version of this issue https://github.com/typed-ember/ember-cli-typescript/issues/780

Maybe @NullVoxPopuli would have more workarounds?

kategengler avatar May 21 '24 16:05 kategengler

best advice I can give is to not override things this way (app-tree merging was a mistake! :see_no_evil: ).

better to use a separately named thing, separate from the addon entirely, or patch the package.

  • https://www.npmjs.com/package/patch-package
  • https://yarnpkg.com/cli/patch
  • https://pnpm.io/cli/patch

just the same, v1 addons should be migrated to v2 -- which means that the problem shouldn't exist. (but please let me know if you run in to any goofiness)

re: ember-cli-typescript, it likely won't be updated, and folks should migrate away :sweat_smile: (the library can't be used in v2 addons, and isn't needed at all in apps)

NullVoxPopuli avatar May 21 '24 16:05 NullVoxPopuli