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

20
在Laravel 5.4中,引入了Mix来编译资源和维护资源管道。 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的配置文件,但在这里看不到任何明显的问题。

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

4个回答

39

有一个未记录的(我相信)方法叫做setPublicPath。然后你可以省略输出中的公共路径。setPublicPath与下划线很搭。

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

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

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

0
在 Laravel 5.4 中,您可以使用以下代码:
AppServiceProvider 中:
public function register()
{

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

}

2
这与Laravel Mix无关。正如我在问题中所述,Mix是一个NPM包(JavaScript)。 - Mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接