在Laravel 5.4中引入了Mix来编译资产并维护资产管道。将默认值混合到名为public
的公共目录。在许多情况下,包括我的,我的公共目录被称为其他东西。就我而言,它是public_html
。
如何更改编译资产的公共目录?
我尝试将webpack.min.js
中的路径更改为:
mix.js('resources/assets/js/app.js', 'public_html/assets/js')
.sass('resources/assets/sass/app.scss', 'public_html/assets/css');
不幸的是,这会编译为:
- public
|- _html
|-- assets
|--- css
|--- js
|- fonts
在Laravel 5.3和Elixir中,这很简单:
elixir.config.publicPath = 'public_html/assets';
我已经查看了Mix的配置文件,但是在这里看不到任何明显的内容。
请注意:这是Laravel Mix,npm包,所以它与index.php
文件中的修改无关。
答案 0 :(得分:19)
有一种名为setPublicPath
的无证(我相信)方法。然后,您可以从输出中省略公共路径。 setPublicPath
与下划线很好地配合使用。
mix.setPublicPath('public_html/');
mix.js('resources/assets/js/app.js', 'assets/js')
.sass('resources/assets/sass/app.scss', 'assets/css');
答案 1 :(得分:2)
在Laravel 5.5中,我已经解决了这个问题,
mix.setPublicPath('public_html/')
.js('resources/assets/js/app.js', 'front/js')
.js('resources/assets/js/custom.js', 'front/js')
.sass('resources/assets/sass/app.scss', 'front/css')
.styles('resources/assets/css/custom.css', 'public_html/front/css/custom.css');
答案 2 :(得分:1)
在Laravel 5.4中,您可以使用以下代码:
AppServiceProvider :中的
public function register()
{
$this->app->bind('path.public', function () {
return base_path() . DIRECTORY_SEPARATOR .'public_html';
});
}
答案 3 :(得分:0)
在Laravel 5.8中
<div class="nav-wrap">