How can I change the public path to something cont

2020-08-10 06:24发布

In Laravel 5.4 Mix was introduced to compile assets and maintain the asset pipeline. Mix defaults to your public directory being named public. In many cases, including mine, my public directory is called something else. In my case, it's public_html.

How can I change the public directory where assets are compiled to?

I have tried changing the paths within webpack.min.js to:

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

Unfortunately this compiles to:

- public
|- _html
|-- assets
|--- css
|--- js
|- fonts

In Laravel 5.3 and Elixir this was as simple as:

elixir.config.publicPath = 'public_html/assets';

I have checked Mix's config file, but can't see anything obvious here.

Please note: this is Laravel Mix, the npm package, so it's nothing to do with amends in the index.php file.

4条回答
走好不送
2楼-- · 2020-08-10 06:33

In Laravel 5.5 I've solved like this,

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');
查看更多
Root(大扎)
3楼-- · 2020-08-10 06:40

There is an undocumented (I believe) method called setPublicPath. You can then omit the public path from the output. setPublicPath plays nicely with underscores.

mix.setPublicPath('public_html/');
mix.js('resources/assets/js/app.js', 'assets/js')
   .sass('resources/assets/sass/app.scss', 'assets/css');
查看更多
狗以群分
4楼-- · 2020-08-10 06:44

In 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');
查看更多
Animai°情兽
5楼-- · 2020-08-10 06:51

In Laravel 5.4 you can us this code:

in AppServiceProvider :

public function register()
{

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

}
查看更多
登录 后发表回答