[[Svelte]]、[[TypeScript]]構成で[[Vite]]を使った場合。 ## インストール ```console npm i -D carbon-components-svelte ``` [[carbon-preprocess-svelte]]もインストール。 ```console npm i -D carbon-preprocess-svelte ``` ## 設定 `main.ts`で[[CSS]]をimportする。 ```ts:main.ts import "carbon-components-svelte/css/white.css"; ``` `svelte.config.js`の`preprocess`をリストにして、`optimizeImports()`と`elements()`を追加。 ```diff:svelte.config.js import sveltePreprocess from "svelte-preprocess"; + import { optimizeImports, elements } from "carbon-preprocess-svelte"; export default { - preprocess: sveltePreprocess()], + preprocess: [sveltePreprocess(), optimizeImports(), elements()], }; ``` > [!warning] > `optimizeImports()`を追加しないと、[[Carbon Components Svelte]]や[[carbon-icons-svelte]]の全packageがブラウザで読み込まれてしまい、データ量とロード時間が大変なことになる。これは[[ESモジュール (JavaScript)|ESモジュール]]のimport方式を使っているためと思われる。 > [!error]- [[TypeScript]]の文法がエラーになる場合 > preprocessの指定順によっては問題になるかも。 > > [Unexpected Token Error when importing types · Issue \#28 · carbon\-design\-system/carbon\-preprocess\-svelte](https://github.com/carbon-design-system/carbon-preprocess-svelte/issues/28) > > また、`icons()`を指定するとなぜか[[TypeScript]]構文を解析できないので注意。 > [!info] > `svelte.config.js`がない構成の場合は、[carbon\-components\-svelte/examples/vite at master · carbon\-design\-system/carbon\-components\-svelte](https://github.com/carbon-design-system/carbon-components-svelte/tree/master/examples/vite) が参考になるかもしれない。 ## アイコン 別途、[[carbon-icons-svelte]]が必要。 ```console npm i -D carbon-icons-svelte ``` 一覧は[[Carbon Design System icons]]を参照。 ## 感想 [[Svelte Material UI]]と比較した感想。期待以上に優れた開発体験が気に入った。 - ==templateの補完や自動importが効くのが神== ([[IntelliJ IDEA]]の場合) - [[Svelte Material UI]]は補完が一切効かなかったのでコピペが必要 - コード量が少なく、シンプルで直感的 - [[Svelte Material UI]]と比べて20%~50%くらいのサイズになる - 逆に[[Svelte Material UI]]みたいなInnerタグは存在しない - コンポーネントの種類が豊富 - 機能面ではほぼ困らない - デザインは今風とは言い難くクセはある - 良くも悪くも[[IBM]]臭がスゴイ - レイアウトは自分達で調整が必要 (に感じる) > [!caution] > ドキュメントをすべて読んだわけではないため、情報の正確性は保証しない。 ## 参考 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> carbon-components-svelte/examples/vite at master · carbon-design-system/carbon-components-svelte </div> <div class="link-card-v2-content"> Svelte implementation of the Carbon Design System. Contribute to carbon-design-system/carbon-components-svelte d ... </div> <img class="link-card-v2-image" src="https://opengraph.githubassets.com/4038d9059e41c650f84ba66b57f3f8a820b2278212681b466da3d1d9125d9437/carbon-design-system/carbon-components-svelte" /> <a href="https://github.com/carbon-design-system/carbon-components-svelte/tree/master/examples/vite"></a> </div>