Qrac
Qrac
@agarie86 ご報告ありがとうございます にて修正しました。 大部分の動作は期待通りに動きます。 ただ、相対パスなどの細かいバグまでは短時間で潰しきれませんでしたので、高度に使い込むと不具合が見つかると思います。
#131 作り直しにともないWinチェックを行うためこちらをクローズします。
## 初期メモ テーマ:軽量化と互換性 - すべての機能をViteプラグイン化 - Deno・Bun互換 「ministaの機能はぜんぶViteプラグインになりました!」という感じにしたい。理由は以下の通り。 - Viteで使える機能がministaで使えないときに改修が大変(ファイルにハッシュ付けるとか) - プロトタイプをministaで途中まで作ってViteのSPAに切り替えて納品したりしてる - Vite単体もよく使うしぶっちゃけツールを持ち替えるのが面倒 - RemixもViteプラグインになったらしいからSSG ↔︎ SPA ↔︎ SSRの切り替えが楽になるのでは? 裏でむちゃくちゃやってる部分をViteプラグイン化できるかわからない部分もあるし、密結合な機能を分割できるかもわからないけど、試しに作ってみたら結構上手くいったので進めてみる。 - minista本体はViteにSSRエクスポート+SSGビルドを指示するだけのラッパーにする - 依存関係を減らす - Viteは更新が早いのでpeerDependenciesにする - react-helmet-asyncは自作できた -...
エンハンスプラグインの利用シーンイメージ ```tsx import html from "./index.html?raw" function ComponentBox() { return ( component text ) } export default function (): EnhancePage { return { html, commands: [ { selector: "section#content3 >...
エンハンスプラグインはReact componentをHTMLとして挿入できるだけでなく、HTMLの挿入、要素の削除、attributeの修正や正規表現を使った既存の値のreplaceなども行えるようにした。 ```tsx export default function (): EnhancePage { return { html, commands: [ { selector: "html", attr: "lang", value: "ja", }, { selector: `link[href="/css/style2.css"]`, method: "remove", }, { selectorAll:...
minista-plugin-appの予定だったものはminista-plugin-mpaに変更。appだとディレクトリ名がassetsより上に来てしまう。 ``` app assets components enhance layouts pages stories ↓ assets components enhance layouts mpa pages stories ```
プラグインを同時に使用する場合は、ページパスの重複を避けるため拡張子を追加して同居させるのが望ましい。 ``` assets components layouts pages ├─ **/*.tsx ├─ **/*.mdx ├─ **/*.mpa.tsx ├─ **/*.enhance.tsx ├─ **/*.stories.tsx └─ **/*.stories.mdx ```
アルファ版をリリースした。実務で検証を開始。
エンハンス用立ち上げインストール。 ```sh npm i -D minista@next minista-plugin-enhance@next vite react react-dom typescript @types/react @types/react-dom ```
StoryApp用 ```sh npm i react react-dom ``` ```sh npm i -D minista@next vite typescript @types/node @types/react @types/react-dom ``` ```sh npm i -D minista-plugin-enhance@next minista-plugin-entry@next minista-plugin-mdx@next minista-plugin-story@next minista-plugin-beautify@next minista-plugin-archive@next ```