| name | vite-patterns |
| description | Vite build tool patterns including config, plugins, HMR, env variables, proxy setup, SSR, library mode, dependency pre-bundling, and build optimization. Activate when working with vite.config.ts, Vite plugins, or Vite-based projects. |
| origin | ECC |
Vite ãã¿ãŒã³
Vite 8+ ãããžã§ã¯ãã®ãã«ãããŒã«ããã³ãããããã¡ã³ããµãŒããŒã®ãã¿ãŒã³ãèšå®ãç°å¢å€æ°ããããã·èšå®ãã©ã€ãã©ãªã¢ãŒããäŸåé¢ä¿ã®äºåãã³ãã«ãäžè¬çãªæ¬çªç°å¢ã®èœãšã穎ãã«ããŒã
䜿çšããã¿ã€ãã³ã°
vite.config.ts ãŸã㯠vite.config.js ãèšå®ãããšã
- ç°å¢å€æ°ãŸãã¯
.env ãã¡ã€ã«ãèšå®ãããšã
- APIããã¯ãšã³ãçšã®ãããããã¡ã³ããµãŒããŒãããã·ãèšå®ãããšã
- ãã«ãåºåïŒãã£ã³ã¯ããããã¡ã€ãã¢ã»ããïŒãæé©åãããšã
build.lib ã§ã©ã€ãã©ãªãå
¬éãããšã
- äŸåé¢ä¿ã®äºåãã³ãã«ãŸãã¯CJS/ESMçžäºéçšã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ããããšã
- HMRããããããã¡ã³ããµãŒããŒããŸãã¯ãã«ããšã©ãŒããããã°ãããšã
- Viteãã©ã°ã€ã³ã®éžæãŸãã¯é åºä»ãããããšã
åäœã®ä»çµã¿
- ãããããã¡ã³ãã¢ãŒãã¯ãœãŒã¹ãã¡ã€ã«ããã€ãã£ãESMãšããŠæäŸããŸãïŒãã³ãã«ãªãïŒã倿ã¯ã¢ãžã¥ãŒã«ãªã¯ãšã¹ãããšã«ãªã³ããã³ãã§è¡ããããããã³ãŒã«ãã¹ã¿ãŒããéãHMRã粟確ã§ãã
- ãã«ãã¢ãŒãã¯RolldownïŒv7+ïŒãŸãã¯RollupïŒv5ãv6ïŒã䜿çšããŠãããªãŒã·ã§ã€ãã³ã°ãã³ãŒãåå²ãOxcããŒã¹ã®ãããã¡ã€ã§ã¢ããªãæ¬çªçšã«ãã³ãã«ããŸãã
- äŸåé¢ä¿ã®äºåãã³ãã«ã¯esbuildãéããŠCJS/UMDäŸåé¢ä¿ãESMã«äžåºŠå€æããçµæã
node_modules/.vite ã«ãã£ãã·ã¥ããŸããããã«ããåŸç¶ã®èµ·åã§ã¯åŠçãã¹ãããã§ããŸãã
- ãã©ã°ã€ã³ã¯ãããããã¡ã³ããšãã«ãã«ããã£ãŠçµ±äžãããã€ã³ã¿ãŒãã§ãŒã¹ãå
±æããŸããåããã©ã°ã€ã³ãªããžã§ã¯ããããããããã¡ã³ããµãŒããŒã®ãªã³ããã³ãå€æãšæ¬çªãã€ãã©ã€ã³ã®äž¡æ¹ã§æ©èœããŸãã
- ç°å¢å€æ°ã¯ãã«ãæã«éçã«ã€ã³ã©ã€ã³åãããŸãã
VITE_ ãã¬ãã£ãã¯ã¹ä»ãã®å€æ°ã¯ãã³ãã«å
ã®ãããªãã¯å®æ°ã«ãªãããã¬ãã£ãã¯ã¹ãªãã®ãã®ã¯ã¯ã©ã€ã¢ã³ãã³ãŒãããèŠããŸããã
äŸ
èšå®ã®æ§é
åºæ¬èšå®
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
plugins: [react()],
resolve: {
alias: { '@': new URL('./src', import.meta.url).pathname },
},
})
æ¡ä»¶ä»ãèšå®
import { defineConfig, loadEnv } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig(({ command, mode }) => {
const env = loadEnv(mode, process.cwd())
return {
plugins: [react()],
server: command === 'serve' ? { port: 3000 } : undefined,
define: {
__API_URL__: JSON.stringify(env.VITE_API_URL),
},
}
})
äž»èŠãªèšå®ãªãã·ã§ã³
| ã㌠| ããã©ã«ã | 説æ |
|---|
root | '.' | ãããžã§ã¯ãã«ãŒãïŒindex.html ã®å ŽæïŒ |
base | '/' | ãããã€ãããã¢ã»ããã®ãããªãã¯ããŒã¹ãã¹ |
envPrefix | 'VITE_' | ã¯ã©ã€ã¢ã³ãã«å
¬éããç°å¢å€æ°ã®ãã¬ãã£ãã¯ã¹ |
build.outDir | 'dist' | åºåãã£ã¬ã¯ã㪠|
build.minify | 'oxc' | ãããã¡ã€ã¢ãŒïŒ'oxc'ã'terser'ããŸã㯠falseïŒ |
build.sourcemap | false | trueã'inline'ããŸã㯠'hidden' |
ãã©ã°ã€ã³
å¿
é ãã©ã°ã€ã³
ã»ãšãã©ã®ãã©ã°ã€ã³ã®ããŒãºã¯ãå°æ°ã®ãã管çãããããã±ãŒãžã§ã«ããŒã§ããŸããç¬èªã®ãã©ã°ã€ã³ãäœæããåã«ããããæ€èšããŠãã ããã
| ãã©ã°ã€ã³ | ç®ç | 䜿çšã¿ã€ãã³ã° |
|---|
@vitejs/plugin-react-swc | SWCçµç±ã®React HMR + Fast Refresh | Reactã¢ããªã®ããã©ã«ãïŒBabelããªã¢ã³ãããé«éïŒ |
@vitejs/plugin-react | Babelçµç±ã®React HMR + Fast Refresh | Babelãã©ã°ã€ã³ãå¿
èŠãªå Žåã®ã¿ïŒemotionãMobXãã³ã¬ãŒã¿ãŒïŒ |
@vitejs/plugin-vue | Vue 3 SFCãµããŒã | Vueã¢ã㪠|
vite-plugin-checker | ã¯ãŒã«ãŒã¹ã¬ããã§HMRãªãŒããŒã¬ã€ä»ãã® tsc + ESLintãå®è¡ | TypeScriptã¢ããªå
šè¬ â Vite㯠vite build äžã«åãã§ãã¯ãè¡ããŸãã |
vite-tsconfig-paths | tsconfig.json ã® paths ãšã€ãªã¢ã¹ãå°é | tsconfig.json ã«ãšã€ãªã¢ã¹ãæ¢ã«ããå Žå |
vite-plugin-dts | ã©ã€ãã©ãªã¢ãŒãã§ .d.ts ãã¡ã€ã«ãåºå | TypeScriptã©ã€ãã©ãªãå
¬éãããšã |
vite-plugin-svgr | SVGãReactã³ã³ããŒãã³ããšããŠã€ã³ããŒã | SVGãã³ã³ããŒãã³ããšããŠäœ¿çšããReactã¢ã㪠|
rollup-plugin-visualizer | ãã³ãã«ã®ããªãŒããã/ãµã³ããŒã¹ãã¬ããŒã | 宿çãªãã³ãã«ãµã€ãºã®ç£æ»ïŒenforce: 'post' ã䜿çšïŒ |
vite-plugin-pwa | ãŒãèšå®ã®PWA + Workbox | ãªãã©ã€ã³å¯Ÿå¿ã¢ã㪠|
éèŠãªæ³šæïŒ vite build ã¯ãã©ã³ã¹ãã€ã«ããŸãããåãã§ãã¯ã¯è¡ããŸãããvite-plugin-checker ã远å ããããCIã§ tsc --noEmit ãå®è¡ããªãéããåãšã©ãŒã¯æ¬çªç°å¢ã«ãµã€ã¬ã³ãã«åºè·ãããŸãã
ã«ã¹ã¿ã ãã©ã°ã€ã³ã®äœæ
ã«ã¹ã¿ã ãã©ã°ã€ã³ã®äœæã¯çšã§ããã»ãšãã©ã®ããŒãºã¯æ¢åã®ãã©ã°ã€ã³ã§ã«ããŒã§ããŸããå¿
èŠãªå Žå㯠vite.config.ts ã«ã€ã³ã©ã€ã³ã§æžãå§ããåå©çšããå Žåã«ã®ã¿æœåºããŠãã ããã
function myPlugin(): Plugin {
return {
name: 'my-plugin',
enforce: 'pre',
apply: 'build',
transform(code, id) {
if (!id.endsWith('.custom')) return
return { code: transformCustom(code), map: null }
},
}
}
äž»èŠããã¯ïŒ transformïŒãœãŒã¹ã®å€æŽïŒãresolveId + loadïŒä»®æ³ã¢ãžã¥ãŒã«ïŒãtransformIndexHtmlïŒHTMLãžã®æ³šå
¥ïŒãconfigureServerïŒãããããã¡ã³ãããã«ãŠã§ã¢ã®è¿œå ïŒãhotUpdateïŒã«ã¹ã¿ã HMR â v7+ã§éæšå¥šã® handleHotUpdate ã®ä»£æ¿ïŒã
ä»®æ³ã¢ãžã¥ãŒã«ã¯ \0 ãã¬ãã£ãã¯ã¹èŠçŽã䜿çšããŸã â resolveId 㯠'\0virtual:my-id' ãè¿ãããšã§ä»ã®ãã©ã°ã€ã³ãã¹ãããããŸãããŠãŒã¶ãŒã³ãŒã㯠'virtual:my-id' ãã€ã³ããŒãããŸãã
å®å
šãªãã©ã°ã€ã³API㯠vite.dev/guide/api-plugin ãåç
§ããŠãã ãããéçºäžã®å€æãã€ãã©ã€ã³ã®ãããã°ã«ã¯ vite-plugin-inspect ã䜿çšããŠãã ããã
HMR API
ãã¬ãŒã ã¯ãŒã¯ãã©ã°ã€ã³ïŒ@vitejs/plugin-reactã@vitejs/plugin-vue ãªã©ïŒã¯HMRãèªåçã«åŠçããŸããã«ã¹ã¿ã ç¶æ
ã¹ãã¢ããããããã¡ã³ãããŒã«ããŸãã¯æŽæ°ãè·šãã§ç¶æ
ãä¿æããå¿
èŠããããã¬ãŒã ã¯ãŒã¯éäŸåã®ãŠãŒãã£ãªãã£ããã«ãããå Žåã®ã¿ãimport.meta.hot ãçŽæ¥äœ¿çšããŠãã ããã
if (import.meta.hot) {
import.meta.hot.data.count = import.meta.hot.data.count ?? 0
import.meta.hot.dispose((data) => clearInterval(data.intervalId))
import.meta.hot.accept()
}
ãã¹ãŠã® import.meta.hot ã³ãŒãã¯æ¬çªãã«ãããããªãŒã·ã§ã€ã¯ãããŸã â ã¬ãŒããåé€ããå¿
èŠã¯ãããŸããã
ç°å¢å€æ°
Vite㯠.envã.env.localã.env.[mode]ã.env.[mode].local ããã®é åºã§èªã¿èŸŒã¿ãŸãïŒåŸã®ãã®ãåã®ãã®ãäžæžãïŒã*.local ãã¡ã€ã«ã¯gitignoreãããŠãããããŒã«ã«ã®ã·ãŒã¯ã¬ããçšã§ãã
ã¯ã©ã€ã¢ã³ããµã€ãã¢ã¯ã»ã¹
VITE_ ãã¬ãã£ãã¯ã¹ä»ãã®å€æ°ã®ã¿ãã¯ã©ã€ã¢ã³ãã³ãŒãã«å
¬éãããŸãïŒ
import.meta.env.VITE_API_URL
import.meta.env.MODE
import.meta.env.BASE_URL
import.meta.env.DEV
import.meta.env.PROD
import.meta.env.SSR
èšå®ã§ã®ç°å¢å€æ°äœ¿çš
import { defineConfig, loadEnv } from 'vite'
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd())
return {
define: {
__API_URL__: JSON.stringify(env.VITE_API_URL),
},
}
})
ã»ãã¥ãªãã£
VITE_ ãã¬ãã£ãã¯ã¹ã¯ã»ãã¥ãªãã£å¢çã§ã¯ãªã
VITE_ ã§ãã¬ãã£ãã¯ã¹ããã倿°ã¯ãã«ãæã«ã¯ã©ã€ã¢ã³ããã³ãã«ã«éçã«ã€ã³ã©ã€ã³åãããŸãããããã¡ã€ãbase64ãšã³ã³ãŒãããœãŒã¹ãããã®ç¡å¹åã§ã¯é ããŸãããæªæã®ããæ»æè
ã¯åºè·ãããJavaScriptããä»»æã® VITE_ 倿°ãæœåºã§ããŸãã
ã«ãŒã«ïŒ ãããªãã¯ãªå€ïŒAPIã®URLããã£ãŒãã£ãŒãã©ã°ããããªãã¯ããŒïŒã®ã¿ã VITE_ 倿°ã«å
¥ããŠãã ãããã·ãŒã¯ã¬ããïŒAPIããŒã¯ã³ãããŒã¿ããŒã¹ã®URLããã©ã€ããŒãããŒïŒã¯APIãŸãã¯ãµãŒããŒã¬ã¹é¢æ°ã®èåŸã«ãããµãŒããŒãµã€ãã«çœ®ããªããã°ãªããŸããã
loadEnv('') ã®èœãšã穎
const env = loadEnv(mode, process.cwd(), '')
const env = loadEnv(mode, process.cwd(), ['VITE_', 'APP_'])
æ¬çªç°å¢ã®ãœãŒã¹ããã
æ¬çªç°å¢ã®ãœãŒã¹ãããã¯ãªãªãžãã«ã®ãœãŒã¹ã³ãŒããæŒæŽ©ãããŸãããšã©ãŒãã©ãã«ãŒïŒSentryãBugsnagïŒã«ã¢ããããŒãããŠããŒã«ã«ã§åé€ããªãéããç¡å¹ã«ããŠãã ããïŒ
build: {
sourcemap: false,
}
.gitignore ãã§ãã¯ãªã¹ã
.env.localã.env.*.local â ããŒã«ã«ã®ã·ãŒã¯ã¬ãããªãŒããŒã©ã€ã
dist/ â ãã«ãåºå
node_modules/.vite â äºåãã³ãã«ãã£ãã·ã¥ïŒå€ããšã³ããªã¯ãŽãŒã¹ããšã©ãŒãåŒãèµ·ããïŒ
ãµãŒããŒãããã·
server: {
proxy: {
'/foo': 'http://localhost:4567',
'/api': {
target: 'http://localhost:8080',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''),
},
},
}
WebSocketãããã·ã«ã¯ãã«ãŒãèšå®ã« ws: true ã远å ããŠãã ããã
ãã«ãæé©å
æåãã£ã³ã¯
build: {
rolldownOptions: {
output: {
manualChunks: {
'react-vendor': ['react', 'react-dom'],
'ui-vendor': ['@radix-ui/react-dialog', '@radix-ui/react-popover'],
},
},
},
}
manualChunks(id) {
if (id.includes('node_modules/react')) return 'react-vendor'
if (id.includes('node_modules')) return 'vendor'
}
ããã©ãŒãã³ã¹
ãã¬ã«ãã¡ã€ã«ãé¿ãã
ãã¬ã«ãã¡ã€ã«ïŒãã£ã¬ã¯ããªãããã¹ãŠãåãšã¯ã¹ããŒããã index.tsïŒã¯ã1ã€ã®ã·ã³ãã«ãã€ã³ããŒãããå Žåã§ãåãšã¯ã¹ããŒãããããã¡ã€ã«ããã¹ãŠèªã¿èŸŒãããšã匷å¶ããŸããããã¯å
¬åŒããã¥ã¡ã³ãã§ææãããŠãããããããã¡ã³ããµãŒããŒã®é床äœäžã®äž»ãªåå ã§ãã
import { slash } from '@/utils'
import { slash } from '@/utils/slash'
ã€ã³ããŒãæ¡åŒµåãæç€ºçã«ãã
æé»ã®æ¡åŒµåã¯ãããã resolve.extensions ãéããŠæå€§6åã®ãã¡ã€ã«ã·ã¹ãã ãã§ãã¯ã匷å¶ããŸããå€§èŠæš¡ãªã³ãŒãããŒã¹ã§ã¯ç©ã¿éãªããŸãã
import Component from './Component'
import Component from './Component.tsx'
tsconfig.json ã® allowImportingTsExtensions ãš resolve.extensions ãå®éã«äœ¿çšããæ¡åŒµåã ãã«çµã£ãŠãã ããã
ããããã¹ã«ãŒãã®ãŠã©ãŒã ã¢ãã
server.warmup.clientFiles ã¯ããã©ãŠã¶ããªã¯ãšã¹ãããåã«æ¢ç¥ã®ããããšã³ããªãäºå倿ããŸããããã«ããå€§èŠæš¡ã¢ããªã§ã®ã³ãŒã«ãããŒããªã¯ãšã¹ãã®ãŠã©ãŒã¿ãŒãã©ãŒã«ãè§£æ¶ãããŸãã
server: {
warmup: {
clientFiles: ['./src/main.tsx', './src/routes/**/*.tsx'],
},
}
é
ããããããã¡ã³ããµãŒããŒã®ãããã¡ã€ãªã³ã°
vite dev ãé
ããšæããããvite --profile ããå§ããŠã¢ããªãæäœããp+enter ãæŒã㊠.cpuprofile ãä¿åããŸããSpeedscope ã§èªã¿èŸŒã¿ãã©ã®ãã©ã°ã€ã³ãæéãæ¶è²»ããŠãããã確èªããŸãïŒéåžžã¯ã³ãã¥ããã£ãã©ã°ã€ã³ã® buildStartãconfigããŸã㯠configResolved ããã¯ïŒã
ã©ã€ãã©ãªã¢ãŒã
npmããã±ãŒãžãå
¬éããå Žå㯠build.lib ã䜿çšããŸããèšå®ã®è©³çްãããéèŠãª2ã€ã®èœãšã穎ããããŸãïŒ
- åã¯åºåãããŸãã â
vite-plugin-dts ã远å ããããå¥é tsc --emitDeclarationOnly ãå®è¡ããŠãã ããã
- ãã¢äŸåé¢ä¿ã¯å¿
ãå€éšåããªããã°ãªããŸãã â ãªã¹ããããŠããªããã¢ãã©ã€ãã©ãªã«ãã³ãã«ããããšãã³ã³ã·ã¥ãŒããŒã§éè€ã©ã³ã¿ã€ã ãšã©ãŒãçºçããŸãã
build: {
lib: {
entry: 'src/index.ts',
formats: ['es', 'cjs'],
fileName: (format) => `my-lib.${format}.js`,
},
rolldownOptions: {
external: ['react', 'react-dom', 'react/jsx-runtime'],
},
}
SSRå€éšå
ãã¢ã® createServer({ middlewareMode: true }) ã®ã»ããã¢ããã¯ãã¬ãŒã ã¯ãŒã¯äœè
åãã§ããã»ãšãã©ã®ã¢ããªã¯NuxtãRemixãSvelteKitãAstroããŸãã¯TanStack Startã䜿çšãã¹ãã§ãããã¬ãŒã ã¯ãŒã¯ãŠãŒã¶ãŒãšããŠèª¿æŽããã®ã¯ãäŸåé¢ä¿ãSSRã§å£ããå Žåã®å€éšåèšå®ã§ãïŒ
ssr: {
external: ['node-native-package'],
noExternal: ['esm-only-package'],
target: 'node',
}
äŸåé¢ä¿ã®äºåãã³ãã«
Viteã¯äŸåé¢ä¿ãäºåãã³ãã«ããŠãCJS/UMDãESMã«å€æãããªã¯ãšã¹ãæ°ãåæžããŸãã
optimizeDeps: {
include: [
'lodash-es',
'cjs-package',
'deep-lib/components/**',
],
exclude: ['local-esm-package'],
force: true,
}
äžè¬çãªèœãšã穎
ãããããã¡ã³ããšãã«ããäžèŽããªã
ãããããã¡ã³ãã¯å€æã«esbuild/Rolldownã䜿çšãããã«ãã¯ãã³ãã«ã«Rolldownã䜿çšããŸããCJSã©ã€ãã©ãªã¯äž¡è
ã§ç°ãªãåäœãããå ŽåããããŸãããããã€åã«å¿
ã vite build && vite preview ã§ç¢ºèªããŠãã ããã
ãããã€åŸã®å€ããã£ã³ã¯
æ°ãããã«ãã¯æ°ãããã£ã³ã¯ããã·ã¥ãçæããŸããã¢ã¯ãã£ããªã»ãã·ã§ã³ãæã€ãŠãŒã¶ãŒã¯ããã¯ãååšããªãå€ããã¡ã€ã«åããªã¯ãšã¹ãããŸããViteã«ã¯çµã¿èŸŒã¿ã®è§£æ±ºçããããŸãããç·©åçïŒ
- ãããã€ã¡ã³ããŠã£ã³ããŠäžã¯å€ã
dist/assets/ ãã¡ã€ã«ãä¿æãã
- ã«ãŒã¿ãŒã§ãã€ãããã¯ã€ã³ããŒããšã©ãŒããã£ããããŠããŒãžããªããŒããã
Dockerãšã³ã³ãã
Viteã¯ããã©ã«ãã§ localhost ã«ãã€ã³ãããã³ã³ããã®å€ããã¯ã¢ã¯ã»ã¹ã§ããŸããïŒ
server: {
host: true,
hmr: { clientPort: 3000 },
}
ã¢ãã¬ãã®ãã¡ã€ã«ã¢ã¯ã»ã¹
Viteã¯ãããžã§ã¯ãã«ãŒããžã®ãã¡ã€ã«æäŸãå¶éããŸããã«ãŒãå€ã®ããã±ãŒãžã¯ãããã¯ãããŸãïŒ
server: {
fs: {
allow: ['..'],
},
}
ã¢ã³ããã¿ãŒã³
envPrefix: ''
const lib = require('some-lib')
manualChunks(id) {
if (id.includes('node_modules')) {
return id.split('node_modules/')[1].split('/')[0]
}
}
build: { minify: 'esbuild' }
import.meta.hot.data = { count: 0 }
import.meta.hot.data.count = 0
ããã»ã¹ã®ã¢ã³ããã¿ãŒã³ïŒ
vite preview ã¯æ¬çªãµãŒããŒã§ã¯ãããŸãã â ãã«ãããããã³ãã«ã®ã¹ã¢ãŒã¯ãã¹ãã§ããdist/ ãå®éã®éçãã¹ãïŒNGINXãCloudflare PagesãVerceléçïŒã«ãããã€ãããããã«ãã¹ããŒãžDockerfileã䜿çšããŠãã ããã
vite build ãåãã§ãã¯ãè¡ããšæåŸ
ãã â ãã©ã³ã¹ãã€ã«ã®ã¿ã§ããåãšã©ãŒã¯æ¬çªç°å¢ã«ãµã€ã¬ã³ãã«åºè·ãããŸããvite-plugin-checker ã远å ããããCIã§ tsc --noEmit ãå®è¡ããŠãã ããã
- ããã©ã«ãã§
@vitejs/plugin-legacy ãå°å
¥ãã â ãã³ãã«ãµã€ãºãçŽ40%èšãã¿ããœãŒã¹ãããã®ãã³ãã«ã¢ãã©ã€ã¶ãŒãå£ãã95%以äžã®ã¢ãã³ãã©ãŠã¶ãŠãŒã¶ãŒã«ã¯äžèŠã§ããä»®å®ã§ã¯ãªãå®éã®ã¢ããªãã£ã¯ã¹ã«åºã¥ããŠé©çšããŠãã ããã
tsconfig.json ãã¹ãéè€ãã30以äžã® resolve.alias ãšã³ããªã§æå管çãã â 代ããã« vite-tsconfig-paths ã䜿çšããŠãã ãããExcalidrawãPostHogã§èгå¯ãããŠãããããæ°ãããããžã§ã¯ãã§ã¯é¿ããŠãã ããã
- äŸåé¢ä¿ã®å€æŽåŸã«å€ã
node_modules/.vite ãæŸçœ®ãã â äºåãã³ãã«ãã£ãã·ã¥ããŽãŒã¹ããšã©ãŒãåŒãèµ·ãããŸãããã©ã³ããåãæ¿ãããšããäŸåé¢ä¿ããããããåŸã«ã¯ãªã¢ããŠãã ããã
ã¯ã€ãã¯ãªãã¡ã¬ã³ã¹
| ãã¿ãŒã³ | 䜿çšã¿ã€ãã³ã° |
|---|
defineConfig | åžžã« â åæšè«ãæäŸãã |
loadEnv(mode, root, ['VITE_']) | èšå®ã§ã®ç°å¢å€æ°ã¢ã¯ã»ã¹ïŒæç€ºçãªãã¬ãã£ãã¯ã¹ïŒ |
vite-plugin-checker | TypeScriptã¢ããªïŒåãã§ãã¯ã®ã®ã£ãããåããïŒ |
vite-tsconfig-paths | æåã® resolve.alias ã®ä»£ããã« |
optimizeDeps.include | çžäºéçšåé¡ãåŒãèµ·ããCJSäŸåé¢ä¿ |
server.proxy | ãããããã¡ã³ãäžã«APIãªã¯ãšã¹ããããã¯ãšã³ãã«ã«ãŒãã£ã³ã° |
server.host: true | Dockerãã³ã³ããããªã¢ãŒãã¢ã¯ã»ã¹ |
server.warmup.clientFiles | ããããã¹ã«ãŒãã®äºå倿 |
build.lib + external | npmããã±ãŒãžã®å
Ž |
manualChunksïŒãªããžã§ã¯ã圢åŒïŒ | ãã³ããŒãã³ãã«ã®åå² |
vite --profile | é
ããããããã¡ã³ããµãŒããŒã®ãããã° |
vite build && vite preview | æ¬çªãã³ãã«ã®ããŒã«ã«ã¹ã¢ãŒã¯ãã¹ãïŒæ¬çªãµãŒããŒã§ã¯ãªãïŒ |
é¢é£ã¹ãã«
frontend-patterns â Reactã³ã³ããŒãã³ããã¿ãŒã³
docker-patterns â Viteã䜿çšããã³ã³ããåããããããããã¡ã³ã
nextjs-turbopack â Next.jsã®ä»£æ¿ãã³ãã©ãŒ