20

在 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

4 回答 4

38

有一个未记录的(我相信)方法称为setPublicPath. 然后,您可以从输出中省略公共路径。 setPublicPath与下划线配合得很好。

mix.setPublicPath('public_html/');
mix.js('resources/assets/js/app.js', 'assets/js')
   .sass('resources/assets/sass/app.scss', 'assets/css');
于 2017-02-05T11:50:40.210 回答
3

在 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');
于 2018-01-24T21:33:18.513 回答
1

在 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');
于 2019-05-05T06:39:39.453 回答
0

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

AppServiceProvider中:

public function register()
{

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

}
于 2017-08-16T05:09:38.777 回答