Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Vite の Library Mode を使って Vue のコンポーネントをライブラリ化する
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
SAW
January 17, 2025
Programming
380
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vite の Library Mode を使って Vue のコンポーネントをライブラリ化する
v-kansai Meetup #16 の発表資料です。
SAW
January 17, 2025
More Decks by SAW
See All by SAW
Effortless API Documentation with Scribe
azuki
0
73
Laravelで手軽にAPIドキュメントを生成する ― Scribe活用術
azuki
0
39
🪝 便利な Property Hooks を 使ってみよう 🪝
azuki
0
78
決済システム超初心者が Stripe に入門している話
azuki
0
110
React Hook Form と Zod によるフォームバリデーション
azuki
0
72
PHP で form-data を POST 以外のメソッドで受け取るには?
azuki
0
84
PHP で学ぶ OAuth 入門
azuki
2
1.4k
EditorConfig を使ってみよう
azuki
1
120
Symfony でサクッと作る REST API サーバー
azuki
1
270
Other Decks in Programming
See All in Programming
AutonomyとControlのあいだ:Graflowで記述するAIエージェント協調
myui
0
120
The NotImplementedError Problem in Ruby
koic
1
710
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
710
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
120
技術記事、 専門家としてのプログラマ、 言語化
mizchi
5
3.2k
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
110
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
540
3Dシーンの圧縮
fadis
1
740
Webフレームワークの ベンチマークについて
yusukebe
0
160
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
490
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
3.6k
Featured
See All Featured
Marketing to machines
jonoalderson
1
5.4k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
200
Designing for Timeless Needs
cassininazir
1
250
Side Projects
sachag
455
43k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Agile that works and the tools we love
rasmusluckow
331
21k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
290
Building AI with AI
inesmontani
PRO
1
1.1k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
200
Docker and Python
trallard
47
3.9k
Transcript
7JUFͷ-JCSBSZ.PEFΛͬͯ 7VFͷίϯϙʔωϯτΛϥΠϒϥϦԽ͢Δ WLBOTBJ.FFUVQ 4"8
$(whoami) w ࢯ໊Ճ౻फҰ ࡀ w ϋϯυϧωʔϜ4"8 w 9 چ5XJUUFS
!B[VLJ@FBUFS w ؔͷ*5ΤϯδχΞίϛϡχςΟͷ͔͠୲ ࣗশ w େࡕࡏॅɾѪग़ w ಘҙ8FCΞϓϦέʔγϣϯ։ൃ w 7VF -BSBWFM ΧϨʔುʹೖΕͨϩʔϦΤΛ શ෦͍͘͢ग़͢ͷҙ֎ͱࢸͷۀ ࠓͷ໎ݴ
7JUFͷ-JCSBSZ.PEF w ϓϩδΣΫτΛՄೳͳϥΠϒϥϦ༻ͷܗࣜͰϏϧυ͢ΔͨΊͷઃఆ w OQNSFHJTUSZͳͲʹ͔ͯ͠Βnpm installͰΠϯετʔϧͯ͠ར༻ w vite.config.tsͰϏϧυઃఆΛมߋ w ΤϯτϦϙΠϯτग़ྗܗࣜ
&4.PEVMF$PNNPO+4ͳͲ ͳͲΛઃఆ
vite.config.tsͷઃఆྫ w defineConfig()ͷbuild.libʹઃఆΛՃ w entryΤϯτϦϙΠϯτͱͳΔϑΝΠϧ w +BWB4DSJQU·ͨ5ZQF4DSJQUͷϑΝΠϧύεΛࢦఆ w nameϥΠϒϥϦԽͨ͠ࡍͷάϩʔόϧม໊ w
formatsग़ྗ͢ΔϑΝΠϧܗࣜ w &4.PEVMF6.%ͳͲͷܗࣜΛࢦఆ export default defineConfig({ build: { lib: { entry: resolve(__dirname, 'src/index.ts'), name: 'my-component-library', formats: ['es', 'umd'], }, }, }) vite.config.ts
7VFͷίϯϙʔωϯτΛϥΠϒϥϦԽ w 7VFίϯϙʔωϯτΛΤϯτϦϙΠϯτܦ༝Ͱexport w ϥΠϒϥϦԽ͢ΔରͷίϯϙʔωϯτͷΈΛexport w src/main.tssrc/App.vueίϯϙʔωϯτͷಈ࡞֬ೝ༻ʹ͢ w ϥΠϒϥϦԽͷରʹؚ·ͳ͍
<script setup lang="ts"> defineProps<{ message: string }>(); </script> <template> <div class="card"> {{ message }} </div> </template> src/components/MessageCard.vue // ライブラリ化するコンポーネントのみ export するエントリポイント import MessageCard from './components/MessageCard.vue'; export { MessageCard }; src/index.ts
5ZQF4DSJQUͷܕఆٛΛՃ w σϑΥϧτͰ7JUF͔Β5ZQF4DSJQUͷܕఆٛΛϏϧυʹՃͰ͖ͳ͍ w distҎԼʹܕఆٛϑΝΠϧ *.d.ts ͕ੜ͞Εͳ͍ w WJUFQMVHJOEUTͱ͍͏ϓϥάΠϯΛར༻͢Δ͜ͱͰܕఆٛΛՃՄೳ w
vite.config.tsʹϓϥάΠϯͷઃఆΛՃ w Ϗϧυ͢ΔͱdistҎԼʹ*.d.ts͕ੜ͞ΕΔ
WJUFQMVHJOEUTͷઃఆྫ w defineConfig()ͷpluginϓϩύςΟʹઃఆΛՃ w tsconfigPathtsconfig.jsonͷύεΛࢦఆ w excludeϏϧυͷର֎ͷϑΝΠϧΛࢦఆ w ಈ࡞֬ೝ༻ͷApp.vuemain.tsΛআ֎
import dts from 'vite-plugin-dts'; export default defineConfig({ plugins: [ vue(), dts({ tsconfigPath: './tsconfig.json', exclude: ['./src/App.vue', './src/main.ts'], }), ], // 略 }) vite.config.ts
ϥΠϒϥϦԽͨ͠Ϗϧυͷެ։ͱΠϯετʔϧ w npm publishͰϏϧυͨ͠ϑΝΠϧ distҎԼ Λެ։ w OQNSFHJTUSZʹެ։͢Δ߹ϩάΠϯ͕ඞཁ w ެ։ͨ͠ϥΠϒϥϦnpm
installͰΠϯετʔϧՄೳ w node_modulesҎԼʹϏϧυͨ͠distͷ༰ͱಉ͡ͷ͕֨ೲ͞Ε͍ͯΔ w ଞͷOQNϞδϡʔϧͱಉ͡ํ๏ͰϥΠϒϥϦΛར༻
૯ׅ w 7JUF͔Β7VFͷίϯϙʔωϯτΛϥΠϒϥϦԽ͢Δํ๏Λհ w 7JUFͷ-JCSBSZ.PEFͰϏϧυ w 5ZQF4DSJQUͷܕఆٛΛϥΠϒϥϦʹՃ͢Δํ๏Λհ w WJUFQMVHJOEUTͱ͍͏7JUFͷϓϥάΠϯΛར༻
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠