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 という