#Sapper #TypeScript #Svelte https://sapper.svelte.dev/docs [[Sapper]]ใ‚’ไฝฟใฃใฆ[[TypeScript]]ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ไฝœใฃใฆใฟใ‚‹ใ€‚ ## Getting started [[degit]]ใ‚’ไฝฟใ†ใ€‚ ``` npx degit "sveltejs/sapper-template#rollup" svel-yuya-tool cd svel-yuya-tool npm i npm run dev ``` ### TypeScriptใซ้ฉๅฟœใ™ใ‚‹ ``` node scripts/setupTypeScript.js npm i ``` `npm run build` ใ—ใชใใฆใ‚‚ใ„ใ‘ใ‚‹? #unknown ### [[Prettier]]ใ‚’้ฉๅฟœ [[SvelteใซPrettierใ‚’้ฉๅฟœ]]ใ‚’ๅ‚็…งใ€‚ ## Sapper App Structure ```shell ๏„• src โ”œโ”€โ”€ ๎˜จ ambient.d.ts โ”œโ”€โ”€ ๎˜จ client.ts ๐Ÿ“ ใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆใฎใ‚จใƒณใƒˆใƒชใƒใ‚คใƒณใƒˆ โ”œโ”€โ”€ ๏„• components โ”‚ โ””โ”€โ”€ ๏…› Nav.svelte โ”œโ”€โ”€ ๏„• node_modules โ”œโ”€โ”€ ๏„• routes โ”‚ โ”œโ”€โ”€ ๏…› _error.svelte โ”‚ โ”œโ”€โ”€ ๏…› _layout.svelte โ”‚ โ”œโ”€โ”€ ๏…› about.svelte โ”‚ โ”œโ”€โ”€ ๏„• blog โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž [slug].json.js โ”‚ โ”‚ โ”œโ”€โ”€ ๏…› [slug].svelte โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž _posts.js โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž index.json.js โ”‚ โ”‚ โ””โ”€โ”€ ๏…› index.svelte โ”‚ โ””โ”€โ”€ ๏…› index.svelte โ”œโ”€โ”€ ๎˜จ server.ts ๐Ÿ“ ใ‚ตใƒผใƒใƒผใฎใ‚จใƒณใƒˆใƒชใƒใ‚คใƒณใƒˆ โ”œโ”€โ”€ ๎˜จ service-worker.ts โ””โ”€โ”€ ๏„ป template.html ``` ### server - Webใ‚ตใƒผใƒใƒผใจใ—ใฆ[[sirv]]ใ‚’ไฝฟใฃใฆใ„ใ‚‹ - ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚ตใƒผใƒใƒผใจใ—ใฆ[[Polka]]ใ‚’ไฝฟใฃใฆใ„ใ‚‹ ## ใ„ใ˜ใฃใฆใฟใ‚‹ ### ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใƒใƒผ `Nav.svelte`ใงๅฎŸ่ฃ…ใ•ใ‚Œใฆใ„ใ‚‹ใ€‚ ```html <nav> <ul> <li><a aria-current="{segment === undefined ? 'page' : undefined}" href=".">home</a></li> <li><a aria-current="{segment === 'about' ? 'page' : undefined}" href="about">about</a></li> <!-- for the blog link, we're using rel=prefetch so that Sapper prefetches the blog data when we hover over the link or tap it on a touchscreen --> <li><a rel=prefetch aria-current="{segment === 'blog' ? 'page' : undefined}" href="blog">blog</a></li> </ul> </nav> ``` ### ้™็š„ใƒ•ใ‚กใ‚คใƒซใฎ็”ปๅƒ่กจ็คบ `static`ใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใ‹ใ‚‰ใฎ็›ธๅฏพใƒ‘ใ‚นใงๆŒ‡ๅฎšใ€‚ `<script>`ใง่จ˜่ฟฐใงใใชใ„ใ‹ใฏไธๆ˜Žใ€‚ #unknown ```html <img alt="Success Kid" src="hoge.png"> ``` ## ใƒ‡ใƒ—ใƒญใ‚ค็”จใซใƒ“ใƒซใƒ‰ใ™ใ‚‹ https://sapper.svelte.dev/docs#Exporting ```shell npm run export ``` ```shell > Finished in 14.7s. Type npx serve __sapper__/export to run the app. ``` `__sapper__/export`้…ไธ‹ใ‚’ใƒ‡ใƒ—ใƒญใ‚คใ™ใ‚Œใฐใ‚ˆใ„ใ€‚ ### index.htmlใŒใงใใชใ„ `polka().use()`ใฎ็ฌฌ1ๅผ•ๆ•ฐใซpathใ‚’ๆŒ‡ๅฎšใ—ใŸใ‚‰`index.html`ใŒใงใใชใใชใฃใŸ..ใ€‚ #### ๆŒ‡ๅฎš็„กใ—ใฎๅ ดๅˆ ```shell ๏„• .\__sapper__/export โ”œโ”€โ”€ ๏„• bitbucket โ”‚ โ””โ”€โ”€ ๏„ป index.html โ”œโ”€โ”€ ๏„• client โ”‚ โ”œโ”€โ”€ ๎Ž bitbucket.76d6b2a1.js โ”‚ โ”œโ”€โ”€ ๎‰ client-e118e612.css โ”‚ โ”œโ”€โ”€ ๎Ž client.d28d6378.js โ”‚ โ”œโ”€โ”€ ๎‰ index-2d39ed90.css โ”‚ โ”œโ”€โ”€ ๎Ž index.325867b5.js โ”‚ โ”œโ”€โ”€ ๎Ž inject_styles.5607aec6.js โ”‚ โ”œโ”€โ”€ ๏„• legacy โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž bitbucket.33573f80.js โ”‚ โ”‚ โ”œโ”€โ”€ ๎‰ client-e118e612.css โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž client.76e69425.js โ”‚ โ”‚ โ”œโ”€โ”€ ๎‰ index-2d39ed90.css โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž index.f7d3484f.js โ”‚ โ”‚ โ””โ”€โ”€ ๎Ž inject_styles.fe622066.js โ”‚ โ””โ”€โ”€ ๎Ž [email protected] โ”œโ”€โ”€ ๏‡… favicon.png โ”œโ”€โ”€ ๎‰ global.css โ”œโ”€โ”€ ๏„ป index.html โ”œโ”€โ”€ ๏‡… logo-192.png โ”œโ”€โ”€ ๏‡… logo-512.png โ”œโ”€โ”€ ๎˜‹ manifest.json โ”œโ”€โ”€ ๏„ป service-worker-index.html โ”œโ”€โ”€ ๎Ž service-worker.js โ””โ”€โ”€ ๏‡… yuya.png ``` #### ๆŒ‡ๅฎšใ‚ใ‚Šใฎๅ ดๅˆ ใ‚ตใƒผใƒใƒ—ใƒญใ‚ฐใƒฉใƒ ใจใ—ใฆใƒ“ใƒซใƒ‰ใ•ใ‚Œใฆใ„ใใ†..ใ€‚ ```shell ๏„• .\__sapper__/export โ”œโ”€โ”€ ๏„• client โ”‚ โ”œโ”€โ”€ ๎Ž bitbucket.76d6b2a1.js โ”‚ โ”œโ”€โ”€ ๎‰ client-e118e612.css โ”‚ โ”œโ”€โ”€ ๎Ž client.d28d6378.js โ”‚ โ”œโ”€โ”€ ๎‰ index-2d39ed90.css โ”‚ โ”œโ”€โ”€ ๎Ž index.325867b5.js โ”‚ โ”œโ”€โ”€ ๎Ž inject_styles.5607aec6.js โ”‚ โ”œโ”€โ”€ ๏„• legacy โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž bitbucket.33573f80.js โ”‚ โ”‚ โ”œโ”€โ”€ ๎‰ client-e118e612.css โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž client.76e69425.js โ”‚ โ”‚ โ”œโ”€โ”€ ๎‰ index-2d39ed90.css โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž index.f7d3484f.js โ”‚ โ”‚ โ””โ”€โ”€ ๎Ž inject_styles.fe622066.js โ”‚ โ””โ”€โ”€ ๎Ž [email protected] โ”œโ”€โ”€ ๏‡… favicon.png โ”œโ”€โ”€ ๎‰ global.css โ”œโ”€โ”€ ๏‡… logo-192.png โ”œโ”€โ”€ ๏‡… logo-512.png โ”œโ”€โ”€ ๎˜‹ manifest.json โ”œโ”€โ”€ ๎Ž service-worker.js โ””โ”€โ”€ ๏‡… yuya.png ``` crawlingใงใƒ’ใƒƒใƒˆใ—ใชใ‹ใฃใŸใฎใŒๅŽŸๅ›  `sapper export --entry /svel-yuya-tool` ใจใ—ใŸใ‚‰ใ‚ฏใƒญใƒผใƒชใƒณใ‚ฐใŒๆญฃๅธธใซๅ‹•ไฝœใ—ใฆๅ‹•ใใ‚ˆใ†ใซใชใฃใŸใ€‚ ```shell ๏„• .\__sapper__/export โ”œโ”€โ”€ ๏„• client โ”‚ โ”œโ”€โ”€ ๎Ž bitbucket.76d6b2a1.js โ”‚ โ”œโ”€โ”€ ๎‰ client-e118e612.css โ”‚ โ”œโ”€โ”€ ๎Ž client.d28d6378.js โ”‚ โ”œโ”€โ”€ ๎‰ index-2d39ed90.css โ”‚ โ”œโ”€โ”€ ๎Ž index.325867b5.js โ”‚ โ”œโ”€โ”€ ๎Ž inject_styles.5607aec6.js โ”‚ โ”œโ”€โ”€ ๏„• legacy โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž bitbucket.33573f80.js โ”‚ โ”‚ โ”œโ”€โ”€ ๎‰ client-e118e612.css โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž client.76e69425.js โ”‚ โ”‚ โ”œโ”€โ”€ ๎‰ index-2d39ed90.css โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž index.f7d3484f.js โ”‚ โ”‚ โ””โ”€โ”€ ๎Ž inject_styles.fe622066.js โ”‚ โ””โ”€โ”€ ๎Ž [email protected] โ”œโ”€โ”€ ๏‡… favicon.png โ”œโ”€โ”€ ๎‰ global.css โ”œโ”€โ”€ ๏‡… logo-192.png โ”œโ”€โ”€ ๏‡… logo-512.png โ”œโ”€โ”€ ๎˜‹ manifest.json โ”œโ”€โ”€ ๎Ž service-worker.js โ”œโ”€โ”€ ๏„• svel-yuya-tool โ”‚ โ”œโ”€โ”€ ๏„• bitbucket โ”‚ โ”‚ โ””โ”€โ”€ ๏„ป index.html โ”‚ โ”œโ”€โ”€ ๏„• client โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž bitbucket.76d6b2a1.js โ”‚ โ”‚ โ”œโ”€โ”€ ๎‰ client-e118e612.css โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž client.d28d6378.js โ”‚ โ”‚ โ”œโ”€โ”€ ๎‰ index-2d39ed90.css โ”‚ โ”‚ โ”œโ”€โ”€ ๎Ž index.325867b5.js โ”‚ โ”‚ โ””โ”€โ”€ ๎Ž inject_styles.5607aec6.js โ”‚ โ”œโ”€โ”€ ๏‡… favicon.png โ”‚ โ”œโ”€โ”€ ๎‰ global.css โ”‚ โ”œโ”€โ”€ ๏„ป index.html โ”‚ โ”œโ”€โ”€ ๎˜‹ manifest.json โ”‚ โ””โ”€โ”€ ๏‡… yuya.png โ””โ”€โ”€ ๏‡… yuya.png ``` ใƒ‡ใƒ—ใƒญใ‚คใฎๅฏพ่ฑกใฏ `./__sapper__/export/svel-yuya-tool`