Vue 的作法

app.component('component-name', component)

Quasar2 的做法

Vite/Typescript

建立 src/boot/register-my-component.ts

import { boot } from 'quasar/wrappers';
import BasicBtnVue from 'src/components/BasicBtn.vue';

// "async" is optional;
// more info on params: https://v2.quasar.dev/quasar-cli/boot-files
export default boot(async ({ app }) => {
  app.component('x-btn', BasicBtnVue);
});

在 quasar.conf.js 內新增設定

module.exports = configure(function (/* ctx */) {
  return {
    // ...上略
    // https://v2.quasar.dev/quasar-cli-vite/boot-files
    boot: ['i18n', 'register-my-component'],
    // ... 下略
  };
});

建立型別定義檔,我放在 src/components 下 components.d.ts

import BasicBtn from './BasicBtn.vue';
declare module '@vue/runtime-core' {
  export interface GlobalComponents {
    XBtn: typeof BasicBtn;
  }
}