Laravel alpine.js + tailwindcss + livewre 설치하기
Updated on
Alpine.js Tailwindcss 설치
yarn add alpinejs -D yarn add tailwindcss -D
yarn add @ryangjchandler/spruce -D yarn add @tailwindcss/ui -D yarn add @tailwindcss/custom-forms -D
Laravel Mix 작성
const mix = require('laravel-mix'); const tailwindcss = require('tailwindcss'); mix.js("resources/js/app.js", "public/js/app.js") .sass("resources/sass/app.scss", "public/css/app.css") .options({ processCssUrls: false, postCss: [ tailwindcss('./tailwind.config.js') ], }) .sourceMaps(); if (mix.inProduction()) { mix.version(); }
resources/js/app.js
require('./bootstrap'); import 'alpinejs'
resurces/sass/app/scss
/** * This injects Tailwind's base styles, which is a combination of * Normalize.css and some additional base styles. * * You can see the styles here: * https://unpkg.com/tailwindcss/dist/base.css */ @tailwind base; /** * Remove the default box-shadow for invalid elements to prevent * inputs in Livewire components showing with a * red border by default in Firefox. * * See: https://github.com/laravel-frontend-presets/tall/issues/7 */ input:invalid, textarea:invalid, select:invalid { box-shadow: none; } /** * This injects any component classes registered by plugins. */ @tailwind components; /** * Here you would add any of your custom component classes; stuff that you'd * want loaded *before* the utilities so that the utilities could still * override them. * * Example: * * .btn { ... } * .form-input { ... } */ /** * This injects all of Tailwind's utility classes, generated based on your * config file. */ @tailwind utilities; /** * Here you would add any custom utilities you need that don't come out of the * box with Tailwind. * * Example : * * .bg-pattern-graph-paper { ... } * .skew-45 { ... } */
tailwindcss 명령어 실행
npx tailwindcss init
tailwind.config.js 수정
const defaultTheme = require('tailwindcss/defaultTheme'); module.exports = { theme: { extend: { fontFamily: { sans: ['Inter var', ...defaultTheme.fontFamily.sans], }, }, }, variants: {}, purge: { content: [ './app/**/*.php', './resources/**/*.html', './resources/**/*.js', './resources/**/*.jsx', './resources/**/*.ts', './resources/**/*.tsx', './resources/**/*.php', './resources/**/*.vue', './resources/**/*.twig', ], options: { defaultExtractor: (content) => content.match(/[\w-/.:]+(?<!:)/g) || [], whitelistPatterns: [/-active$/, /-enter$/, /-leave-to$/, /show$/], }, }, plugins: [ require('@tailwindcss/custom-forms'), require('@tailwindcss/ui'), ], };
명령어 실행
yarn dev
이렇게… 되고.. 성공 함..
Livewire + turbolinks 설치
composer require livewire/livewire
blade 수정
... @livewireStyles </head> <body> ... @livewireScripts </body> </html>
yarn add turbolinks -D
resources/js/app.js 수정
require('./bootstrap'); import 'alpinejs' var Turbolinks = require("turbolinks") Turbolinks.start()
alpine.js 에서 x-show 문제가 발생하는데.. 이 부분은
https://github.com/alpinejs/alpine#x-cloak
x-cloak 으로 해결할 수 있다.
https://dev.to/hus_hmd/alpine-js-responsive-x-cloak-3blp
하지만, 추가적으로 alpine.js + turbolinks 를 사용하면, x-show 캐싱문제가 발생하는데… 이 부분에 대해서는 추 후에 작성하겠습니다.
https://github.com/alpinejs/alpine-turbolinks-adapter
처럼, alpine turblinks의 어댑터 또한 작업중입니다…. 참고 참고…
Vue 3 그리고 Nuxt 3 은 언제쯤 출시일지.. 벌써 시간이 흘러서 Laravel 8 이 출시된다고 하네요.. 허어… (개발한건 하나도 없는데 ’ _’)