Upgrade to Pro — share decks privately, control downloads, hide ads and more …

まだWebpackで消耗してるの?

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for mimu mimu
March 27, 2022
89

 まだWebpackで消耗してるの?

社内LTの発表資料

Avatar for mimu

mimu

March 27, 2022
Tweet

Transcript

  1. Laravel Vite https://laravel-vite.dev/ webpack でいう Laravel mix 的なやつ vite 本体を抽象化して扱いやすくしたもの

    新規の Laravel プロジェクトならコマンド一発でセットアップ完了するよ npx @preset/cli apply laravel:vite
  2. 蛇足(愚痴) vue2⇨3 の migration がまあまあ辛い(これで丸 3 日費やしたなんて言えない) vue-property-decorator が vue3

    対応しておらずデコレータを認識できずにエラーに vue2 のままでも vite が使えるようになるライブラリ(vite-plugin-vue2)を入れて何と か頓挫せずに済んだ
  3. import { defineConfig } from 'vite' import laravel from 'vite-plugin-laravel'

    import eslint from 'vite-plugin-eslint' import { createVuePlugin as vue } from 'vite-plugin-vue2' import path from 'path' import glob from 'glob' export default defineConfig(({ command }) => ({ base: '', build: { root: '/', base: '/', manifest: true, outDir: path.resolve(__dirname, 'public/assets'), rollupOptions: { input: glob.sync('resources/js/**/*.ts').map(function (file) { return file }), output: { chunkFileNames: '[name].chunk.js?id=[hash]', }, }, }, plugins: [vue(), laravel(), eslint()], resolve: { alias: [ { find: '@js', replacement: path.resolve(__dirname, 'resources/js'), }, { find: '@img', replacement: path.resolve(__dirname, 'resources/img'), }, { find: '@sass', replacement: path.resolve(__dirname, 'resources/sass'), }, { find: '@node_modules', replacement: path.resolve(__dirname, 'resources/node_modules'), }, { find: /^~(.*)$/, replacement: '$1', }, ], // デフォルトでは.vue が入っていない extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', 'vue'], }, optimizeDeps: { include: ['vue'], }, }))