这期内容当中小编将会给大家带来有关怎么在Laravel中自定义webpack.mix.js,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强> Laravel自定义webpack.mix。js 强>
我们在使用<代码> laravel 代码>构建项目时,经常会把<代码>后台管理代码>及<代码>前台> 代码放在同一个<代码> laravel> 代码项目中。
但是当这两个项目都需要用到<代码> laravel-mix 代码>构建时,我们希望通过运行不同的<代码> npm 代码>命令区分后台及前台。
考虑混合在一起的情况:
//webpack.mix.js {const mix },=,要求(& # 39;laravel-mix& # 39;); ,,,//前台资源打包到,公共/js/index.js/mix.js(& # 39;资源/资产/js/app.js& # 39;,, & # 39; js/index.js& # 39;) ,,,//后台资源打包到,公共/js/admin/index.js ,,. js(& # 39;资源/资产/js/admin/index.js& # 39;,, & # 39; js/admin/& # 39;);
在<代码> webpack.mix。js代码>中,我们把后台和前台资源文件写在同一个配置文件中,这样你只需运行<代码> npm dev> 代码运行,资源文件就能自动打包了。
但是当只你想更新前台资源文件时,后台资源文件不得不一起被动更新。
<强>解决方案强>
在根目录定义两个配置文件
- <李>
webpack.mix。js//默认已存在
李> <李>webpack.admin.js
李>更新<代码> webpack.mix。js> 代码使其支持<代码> env 代码>。
//webpack.mix.js {const mix },=,要求(& # 39;laravel-mix& # 39;); {const env },=,要求(& # 39;minimist& # 39;) (process.argv.slice (2)); if (env ,,, env.admin), { ,,,需要(“$ {__dirname} \ \ webpack.admin.js”); ,,,返回; } mix.js(& # 39;资源/资产/js/app.js& # 39;,, & # 39; js/index.js& # 39;);//其他前端资源
后端资源打包<代码> webpack.admin。js代码>配置
//webpack.admin.js {const mix },=,要求(& # 39;laravel-mix& # 39;); mix.js(& # 39;资源/资产/js/admin/index.js& # 39;,, & # 39; js/admin/& # 39;);//其他后台资源配置
确认已安装完<代码> 代码>节点依赖,并在根目录执行
npm run dev ——,——env.admin //打包后端资源 npm run  dev ,,,,,,,,,,,,,,,//默认打包前端资源
若嫌每次都带参数太麻烦,可更新<代码>包。json代码>文件,带上<代码> env> 代码参数(最后面)
“scripts":, { ,,,“dev-admin":,“node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js ——progress ——hide-modules - config=node_modules/laravel-mix/设置/webpack.config.js ——env.admin" }
接下来直接运行<代码> npm运行dev-admin> 代码就能打包后端资源。
<强>注意,强>
当<代码> webpack.mix.js 代码>及<代码> webpack.admin.js> 代码没有指定不同的<代码> mix.setPublicPath(路径)代码>时,默认的打包文件都会放到<代码>/公共代码>目录下,这样每次打包都会覆盖<代码> mix-manifest。json代码>的值。
最好的方法时前台及后台指定不同的目录,
server { ,,,server_name admin.domain.com; ,,,index index . php。 ,,,root /数据/你/网站/public-admin; ,,,#,.... } server { ,,,server_name domain.com; ,,,root /数据/你/网站/公众; ,,,index index . php。 ,,,#,.... }
这样你只需要在<代码> webpack.admin.js> 代码指定<代码> publicPath> 代码就能避免<代码> mix-manifest。json> 代码被覆盖的问题。
//webpack.admin.js mix.setPublicPath (& # 39; public-admin& # 39;);//?/pre>引用>
怎么在Laravel中自定义webpack.mix.js