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

How can I change the public path to something containing an underscore in Laravel Mix?

在 Laravel 5.4 中引入了 Mix 来编译资产和维护资产管道。 Mix 默认将您的 public 目录命名为 public。在很多情况下,包括我的,我的 public 目录被称为别的东西。就我而言,它是 public_html.

如何更改编译资产的 public 目录?

我尝试将 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 的配置文件,但在这里看不到任何明显的东西。

请注意:这是 LaravelMix,npm 包,因此与 index.php 文件中的修改无关。

有一个未记录的(我相信)方法叫做 setPublicPath。然后您可以从输出中省略 public 路径。 setPublicPath 与下划线搭配得很好。

mix.setPublicPath('public_html/');
mix.js('resources/assets/js/app.js', 'assets/js')
   .sass('resources/assets/sass/app.scss', 'assets/css');

在 Laravel 5.4 中,您可以使用此代码:

AppServiceProvider 中:

public function register()
{

    $this->app->bind('path.public', function () {
        return base_path() . DIRECTORY_SEPARATOR .'public_html';
    });

}

在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');

在Laravel 5.8

mix.config.publicPath='public_html';
mix.js('resources/assets/js/app.js', 'public_html/js')
   .sass('resources/assets/sass/app.scss', 'public_html'/css');