Laravel项目如何配置Webpack将public资源输出到指定外置目录
解决Laravel Mix修改外置public目录后仍生成根目录public文件夹的问题
出现这个问题是因为Laravel Mix默认内置了根目录public作为公共资源路径,即使你手动指定了资源的输出路径,Mix生成mix-manifest.json等内置操作仍会向默认的public路径写入内容,因此会自动生成该目录。
步骤1:修改webpack.mix.js配置
首先显式调用setPublicPath方法指定你的外置public路径,无需再给资源输出路径加相对前缀:
// 先指定外置公共目录路径 mix.setPublicPath('../projpubl') .js('resources/js/app.js', 'js') .postCss('resources/css/app.css', 'css', [ require('postcss-import'), require('tailwindcss'), ]);
如果你习惯用绝对路径也可以写:mix.setPublicPath('c:/xampp/htdoc/projpubl')
步骤2:同步修改Laravel框架的public路径绑定(建议配置)
如果要让Laravel本身也识别外置的public路径,避免后续路由、静态资源引用报错,需要修改app/Providers/AppServiceProvider.php,在register方法中添加路径绑定:
public function register() { $this->app->bind('path.public', function () { // 相对路径写法,和projpubl的层级对应即可 return base_path('../projpubl'); // 也可以写绝对路径:return 'c:\xampp\htdoc\projpubl'; }); }
步骤3:验证配置
先手动删除项目根目录已生成的public文件夹,再重新执行npm run dev,就不会再生成根目录的public文件夹,所有资源和manifest文件都会输出到你指定的外置projpubl目录下。
内容的提问来源于stack exchange,提问作者user2301515
相关产品推荐
相关产品推荐

