Spoonail-Iroiro / maginai

Mod loader
MIT License
1 stars 2 forks source link

グローバル変数maginai: Maginaiの型定義を提供 #14

Closed Spoonail-Iroiro closed 11 months ago

Spoonail-Iroiro commented 11 months ago

※#5 が完了してからにしたい

package.jsonのexports設定によりMaginaiクラスをimportできるようにする import {Maginai} from 'maginai/class'

あとは利用側が以下の型定義を用意すればOK

import { Maginai } from 'maginai/class'
declare global {
  var maginai: Maginai;
}
Spoonail-Iroiro commented 11 months ago

今も

import { Maginai } from 'maginai/lib/modules/maginai.js';
declare global {
  var maginai: Maginai;
}

で可能

わかりにくいのでpackage.jsonでsubpath exportを以下のように定義し

  "main": "",
  "types": "./lib/loader.d.ts",
  "exports": {
    ".": "./lib/loader.d.ts",
    "./*": "./lib/modules/*"
  },
import { Maginai } from 'maginai/maginai.js'

でできるようにしたい ただし環境によってはMaginaiのimportでmaginai/lib/module...の方がサジェストされたりする typescript 5.2.2下のjsファイルで確認(ESNext/ESNext/Node16)

Spoonail-Iroiro commented 11 months ago

ただし環境によってはMaginaiのimportでmaginai/lib/module...の方がサジェストされたりする typescript 5.2.2下のjsファイルで確認(ESNext/ESNext/Node16)

moduleResolutionNode16Bundlerでなかったり、そうであっても何かの要因でプロジェクトのtsconfig.jsonが反映されないファイルに対しては上記のようになる(subpath exportの無視)になるので注意 (includeの対象か、jsファイルの場合"allowJs": trueになっているか等)