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

馋奶兔 提交于 2019-12-06 19:20:57

问题


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.


回答1:


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



回答2:


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



回答3:


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

}



回答4:


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


来源:https://stackoverflow.com/questions/42051576/how-can-i-change-the-public-path-to-something-containing-an-underscore-in-larave

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!