qrac / minista

Static site generator with 100% static export from React and Vite.
https://minista.qranoko.jp
165 stars 13 forks source link

機能要望: assets.entry.inputで指定したファイルを階層通りに出力したい #109

Closed ongaq closed 1 year ago

ongaq commented 1 year ago

既に現在の機能で以下が実現できるとしたら申し訳ございません。 まずは可能かどうか検討頂けると幸いです。

問題

{
  "out": "dist",
  "assets": {
    "entry": [
      {
        "input": "src/assets/sp/about/index.ts",
        "insertPages": "/s/about/"
      }
    ]
  }
}

上記アセットでbuildを実行した場合

結果

dist/assets/index.js が出力される

期待する結果

ファイルとしては dist/assets/sp/about/index.js に出力してほしく、 insertPagesで指定されたhtml内では

<script type="module" src="/assets/sp/about/index.js"></script>

と出力してほしい。

optionalでentryごとにoutDirが指定出来ると理想だが、

106 で検討されている<Entry />機能とバッティングしそう(こっちはこっちでめちゃくちゃ欲しい機能でした)なのでパス通りに出力する、現状のassets.outDir直下に出力するのニ択がconfigで選択出来ると良いかなと考えています。

理由

現在ウェブサイトの運用としてministaを使わせていただきたいと考えているが、 entryに記載したファイルを全てdist/{assets.outDir}直下に出力されると既存のファイルを管理しているディレクトリ構造と一致せず、build後にファイルの移動とCSS/JSパスの書き換えが必要になるため。

qrac commented 1 year ago

@ongaq ご提案ありがとうございます!現状の機能ですと、エントリーにビルド後の名前が付けられますので、少し冗長ですが以下のように書いていただくと希望の場所に出力できるのではないかと思いました。

{
  "out": "dist",
  "assets": {
    "entry": [
      {
        "name": "sp/about/index",
        "input": "src/assets/sp/about/index.ts",
        "insertPages": "/s/about/"
      }
    ]
  }
}

階層構造の引き継ぎオプションはあっても良いかもしれませんね。 <Entry /> はまだどうなるかわかりませんが、引き続き進めていきます...!

ongaq commented 1 year ago

現状の機能ですと、エントリーにビルド後の名前が付けられますので、少し冗長ですが以下のように書いていただくと希望の場所に出力できるのではないかと思いました。

nameで / 区切りでディレクトリ切って出力できたんですね…!! 期待通りの出力になりましたありがとうございます。 知らず提案失礼しました!こちらクローズ致します!

<Entry /> はまだどうなるかわかりませんが、引き続き進めていきます...!

現状は pages/xxx/index.tsx があったとして pages/xxx/entry.json といったものを作成し、 npm run dev, build実行時にminista.config.ts側で取得しassets.entryにマージする設定を手元で作ってました。 もちろんhotreload等効きませんがconfig側で一律まとめるよりは管理しやすいかなと。 楽しみにしてます!