web-dev-qa-db-fra.com

Comment puis-je changer le chemin public à quelque chose contenant un trait de soulignement dans Laravel Mélanger?

Dans Laravel 5.4 Mix a été introduit pour compiler les actifs et gérer le pipeline d’actifs. Mix par défaut, votre répertoire public est nommé public. Dans de nombreux cas, y compris le mien, mon répertoire public s’appelle autre chose. Dans mon cas, c'est public_html.

Comment puis-je changer le répertoire public où les actifs sont compilés?

J'ai essayé de changer les chemins dans webpack.min.js en:

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

Malheureusement, cela compile pour:

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

Dans Laravel 5.3 et Elixir, cela était aussi simple que:

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

J'ai vérifié le fichier de configuration de Mix, mais je ne vois rien d’évident ici.

S'il vous plaît noter: il s'agit de Laravel Mix, le paquet npm, donc cela n'a rien à voir avec les amendements dans le fichier index.php.

10
Mike

Il existe une méthode non documentée (je crois) appelée setPublicPath. Vous pouvez ensuite omettre le chemin public de la sortie. setPublicPath joue bien avec les traits de soulignement.

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

Dans Laravel 5.5 j'ai résolu comme ça,

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');
2
musa hayta

Dans Laravel 5.4, vous pouvez nous utiliser ce code:

dans AppServiceProvider :

public function register()
{

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

}
1
hamidteimouri