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