Update 2023: I highly advise using Vite with their official preset, as it's much easier to configure and miles faster than Webpack.
In this article, I share my configuration for Preact usage with Laravel Mix.
Install these dependencies before you get started:
preact@babel/plugin-proposal-class-properties@babel/preset-react
You can do it with this command:
npm install preact @babel/plugin-proposal-class-properties @babel/preset-react Next, add this content to your webpack.mix.js
// webpack.mix.js const mix = require('laravel-mix'); mix.webpackConfig({ "resolve": { "alias": { "react": "preact/compat", "react-dom": "preact/compat" } } }); mix.babelConfig({ "plugins": [ "@babel/plugin-proposal-class-properties" ], }); mix.react('resources/js/app.js', 'public/js'); And here is an example app component, you can store it in resources/js/app.js file:
// app.js import { h, render, Component } from 'preact'; window.React = require('preact'); class App extends Component { render() { return <h1>Preact from Laravel Mix</h1>; } } render(<App />, document.body); Note: As we set out rendering node as document.body, you should place your script tag inside <body> tag. If you need to place <script> tag in the <head> section - you will need to add defer attribute.
<body> <script src="{{ mix('js/app.js') }}"></script> </body> That's all, happy coding! :)
Top comments (1)
Thanks for the post ... but What's benfit of using "babel/plugin-proposal-class-properties"?