Vite の恩恵にあずかりつつ HTML + SASS(SCSS) 中心なら Svelte がいいかもしれない
はじめに
React も Vue.js も使わないけど HTML + SASS(SCSS) を中心としたモダンな環境が欲しい場合の選択肢として Vite + Svelte をおすすめしてみる。
概略
- さくっと紹介するつもりだったのにセットアップの手段が二つもあって戸惑った
-
npm init viteだとシンプルだがルーティングできない -
npm init svelteだとやや複雑だがルーティングできる
-
- SASS を扱うのは簡単
-
npm i -D sassするだけ
-
- 拡張子が svelte のファイルは HTML のサブセット
- ただの HTML として扱える
Vite 側のツールでセットアップする場合
セットアップ
cd ~/src
npm init vite my_app -- --template svelte
cd my_app
npm i
npm run dev -- --open
これで http://localhost:3000/ が開く。
SASS対応
html
background-color: navy
color: white
npm i -D sass を実行する。App.sass を新規で作成し src/main.js に import './App.sass' としてインポートする。
HTMLを書く
<p>Hello world!</p>
<p>Hello world!</p>
<p>Hello world!</p>
既存の src/App.svelte を上の内容に書き換える。一部を書き換えるのではなく全体がその3行である。
ここまでやるとこうなる。

とりあえず、
- SASS の検証をする
- HTMLを1枚作る
だけならこれで充分だろう。ディレクトリ構成もシンプルなので余計なことに気を使う必要がない。ただしルーティングしたい場合は困る (続く)
Svelte 側のツールでセットアップする場合
まず npm init vite で作るとルーティングがないシンプルな構成になるのがわかった。一方 npm init svelte で作るとルーティング機能付きで生成してくれる。package.json を見ると @sveltejs/kit が追加されているのがわかる。
セットアップ
cd ~/src
npm init svelte my_app
cd my_app
npm i
npm run dev -- --open
npm init svelte ではデモが含まれる構成を選択する。それを選択すると app.css が含まれているので後でどこに css ファイルを置くべきか迷わずにすむ。
SASS対応
npm i -D sass を実行する。src/app.css を src/app.sass にリネームして SASS 形式で書く。src/routes/__layout.svelte 内の app.css を app.sass に変更する。
ルーティングの方法
src/routes 以下のディレクトリ構成がそのままURLになる。src/routes/foo.svelte を用意したら <a href="/foo">Foo</a> でリンクできる。
Discussion