如何在Laravel Mix中将公共路径更改为包含下划线的内容?

时间:2017-02-05 11:35:26

标签: php laravel laravel-elixir laravel-5.4 laravel-mix

在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文件中的修改无关。

4 个答案:

答案 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">