我在前几天刚写过的《让 F5 歇一会儿——laravel-mix 自动刷新之道》[1]中介绍了 laravel-mix 实现自动刷新的几种方法,其中就有涉及 hmr(Hot Module Replacement 对于 Laravel 官方首推的 Homestead 当然也是可以的,只不过用法上有些差别,于加上 laravel-mix 本身的一些 BUG(在 issue 里搜索 hmr 结果就有好几页 :smile (虽然可以考虑在宿主机全局安装依赖,但诸如 eslint-config-xxx 之类的项目相关的包也全局安装,必然造成混乱) 如同学习很多其它新工具新玩法一样,刚开始折腾 laravel-mix 时总是磕磕绊绊 References [1] 《让 F5 歇一会儿——laravel-mix 自动刷新之道》: https://tianyong90.com/2019/04/12/rang-f5-xie-yi-hui-er-laravel-mix-zi-dong-shua-xin-zhi-dao
看过我之前写过的博客的应该知道我一直是 laravel-mix 的死忠粉,有好几篇文章都是关于它的。每每提到 laravel-mix 时更是不吝溢美之词。 至于为什么放弃 laravel-mix,主要是因为它的维护状况堪忧,不仅更新节奏缓慢,许多 Issue 久悬未决,更重要的是,作者似乎将很多 bug 完全寄希望于 webpack5,哪怕有热心人士 PR 正所谓爱之深,责之切,在对 laravel-mix 表示失望之后,我翻出了自己 star 多时的另一包 webpack-encore,虽说很早就 star 了,但之前却没试用过它,可能也是因为对于 laravel-mix 而我迁移的这个项目,是一个 Laravel 项目,所以下面就分享下,如果在 Laravel 项目中使用 webpack-encore 替代 laravel-mix。 总之,如果你已经发现了 laravel-mix 的种种不足但又苦于没更好选择的话,不妨试试 webpack-encore,相信你会对它爱不释手。
因为近几年来大部分时假在与 Laravel 打交道,使用 laravel-mix 已成家常便饭,所以想着总结并分享一下 laravel-mix 工作流中的自动刷新之道。 laravel-mix 自称 An elegant wrapper around Webpack for the 80% use case ,其功能确实强大,它对于前端开发工作流的考虑也是非常全面,可以通过 要在 laravel-mix 中使用 hmr,不需要安装其它额外的依赖包。 安装依赖 // laravel-mix v4 yarn add -D webpack-livereload-plugin // laravel-mix v3 或更早 yarn add -D webpack-livereload-plugin 但同时需要注意的是 laravel-mix 环境下使用 hmr 也存在一些问题(当前最新版本 4.0.15 中仍存在),例如与 mix.extract() 没法同时使用( 见 Issue ) 以及在windows
vux-loader --save npm install less-loader --save 安装完成后我们还需要将 webpack.config.js 文件提出来 cp node_modules/laravel-mix /node_modules/laravel-mix/src/index和 . /node_modules/laravel-mix/src/builder/WebpackConfig 附加代码: /** * As our first step, we'll pull in the /node_modules/laravel-mix/src/index'); // 修改路径 require(Mix.paths.mix()); /** * Just in case the user /node_modules/laravel-mix/src/builder/WebpackConfig'); //修改路径 module.exports = new WebpackConfig().
laravel-elixir-livereload": "^1.1.6", "laravel-elixir-vue-2": "^0.3.0", "laravel-elixir-webpack-official": "^1.0.10", "laravel-mix elixir((mix) => { mix.sass('app.scss') .webpack('app.js'); }); webpack.mix.js let mix = require('laravel-mix ' 项目中使用 宽度为750px的设计图,由于rootValue: 37.5为基准,在写css时候设计图上文字大小多少像素就写多少像素即可 cnpm install axios --save 第二 laravel-mix
"axios": "^0.18", "bootstrap": "^4.0.0", "cross-env": "^5.1", "jquery": "^3.2", "laravel-mix Laravel Mix 的配置文件就是项目根目录下的 webpack.mix.js: const mix = require('laravel-mix'); mix.js('resources/js/ app.js', 'public/js') .sass('resources/sass/app.scss', 'public/css'); 目前,它非常之简洁,从 node_modules 中引入 laravel-mix
NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix /webpack.config.js" }, "devDependencies": { "axios": "^0.19", "cross-env": "^7.0", "laravel-mix
Laravel Mix 工具,这会节省大量前端配置时间 根目录新建文件 webpack.mix.js const fs = require('fs'); const mix = require('laravel-mix script> <script src="/mix/dist{{ get_version('/js/'~app~'.js') }}"></script> 1 2 3 4 5 6 7 8 9 10 11 # laravel-mix 配置 const path = require('path') const mix = require('laravel-mix') const rs_root = 'public/mix/resources
let mix = require('laravel-mix'); /* |----------------------------------------------------- | package.json webpack.mix.js 接下来写一个简单的 Laravel Mix 配置文件, webpack.mix.js let mix = require('laravel-mix 如果这个还是不能满足要求,你完全可以自定义你的 Webpack 配置, 拷贝node\_modules/laravel-mix/setup/webpack.config.js 到你的应用的根目录,然后编辑你的
asset() 使用当前请求的scheme(HTTP或HTTPS)为前端资源生成一个URL: $url = asset('img/photo.jpg'); laravel自带了laravel-mix,用于对
NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix
libSass 的实现,所以我们可以通过安装这个前端扩展包来编译 Sass 文件,不过在 Laravel 项目中,开箱提供了 Laravel Mix 进行前端资源的编译,当我们通过 npm install 安装 laravel-mix 的过程中,系统会自动安装 laravel-mix 声明的依赖,其中就包括了编译 Sass 所需要的 node-sass,我们无需再额外安装这个扩展包,这些事情 Laravel Mix 在底层默默帮我们完成了
NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix
vue-template-compiler": "^2.1.4", "axios": "^0.15.2", "bootstrap-sass": "^3.3.7", "jquery": "^3.1.0", "laravel-mix
NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix
文件变成最终可以引入到 HTML 文档的文件,还需要在 blog 根目录下新建 webpack.mix.js,通过 Laravel Mix 来编译打包这些预处理 js 文件: const mix = require('laravel-mix 然后在 webpack.mix.js 中补充对应的处理逻辑: const mix = require('laravel-mix') mix.js('resources/js/app.js', 'public
install laravel-mix-tailwind --save-dev 安装完成后,需要在项目根目录下的 webpack.mix.js 中引入它: const mix = require('laravel-mix
Mix 编译前端资源 做好以上准备工作后,就可以在 webpack.mix.js 中将上述资源文件编译打包为对应的 JavaScript 和 Css 代码了: const mix = require('laravel-mix
3、安装Laravel项目的前端依赖库 在生成的Laravel项目中,package.json文件包含了前端依赖库的描述信息,例如: axios bootstrap cross-env jquery laravel-mix
你知道怎么写,但是新框架的新语法让你不得不查看更多的文档甚至源码,你不得不花更多的时间去适配它;而当你的团队有新人接手这些项目时,他也得跟你走一样的路,并且 Laravel 团队说不定哪天还会弃用它们(如 Laravel-Mix