Vue Developer Experience / VueDXを試した
Vue Developer Experience / VueDX とは
- https://github.com/znck/vue-developer-experience
- DX を向上させる Vue に関するツール群
- 2020-11-08 時点ではプレアルファバージョンらしく、11 月末にアルファリリースの予定みたい
- vite の vue tepmlate に採用されていて、どんどん利用者は増えていきそうな予感
- DX を向上させる Vue に関するツール群
試したいモチベーション
- このブログに Storybook の導入を試みている中で、
.vueファイルでexportした型を.stories.tsファイルから参照したくなった- Storybook には
Storyという型があり、各 Story を記述するときに利用できる - 以下は React の例
- Storybook には
// List.stories.tsx
import React from "react";
import { Story, Meta } from "@storybook/react/types-6-0";
import { List, ListProps } from "./List";
export default {
component: List,
title: "List",
} as Meta;
// Always an empty list, not super interesting
const Template: Story<ListProps> = (args) => <List {...args} />;
https://storybook.js.org/docs/react/writing-stories/introduction#stories-for-two-or-more-components
Template関数のargsの型がListのコンポーネントファイルが export するListPropsになる- これと同様のことをしたい場合、 TypeScript (tsserver/tsc) に
.vueファイルを理解してもらう必要がある
- これと同様のことをしたい場合、 TypeScript (tsserver/tsc) に
VueDX で出来ること
- @vuedx/typecheck を使うと CLI から型チェックが可能
VueDX で出来ないこと
tsc/tsserverコマンドでの.vueファイルの型チェック- @vuedx/typescript-plugin-vue という
.vueファイルの型チェックを行う TypeScript Plugin が開発されているtsconfig.jsonのpluginsに{"name": "@vuedx/typescript-plugin-vue"}を指定できる
- tsc/tsserver が読み込むファイルの拡張子は限定されている
.ts/.tsxと設定によっては.js/jsx/.jsonも- この制限を解除する
allowNonTsExtensionsというオプションがあるが、CLI からは指定できない@vuedx/typecheckはこの引数にtrueを渡している- オプションを expose する提案はあるけど進んでない…
- @vuedx/typescript-plugin-vue という