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の設定ファイルを確認しましたが、ここでは明らかなものは何もありません。
注意:これはLaravel Mix、npmパッケージなので、index.php
ファイルの修正とは関係ありません。
setPublicPath
と呼ばれる文書化されていない(私は信じている)メソッドがあります。その後、出力からパブリックパスを省略できます。 setPublicPath
はアンダースコアでうまく機能します。
mix.setPublicPath('public_html/');
mix.js('resources/assets/js/app.js', 'assets/js')
.sass('resources/assets/sass/app.scss', 'assets/css');
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');
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');
Laravel 5.4では、このコードを使用できます:
in AppServiceProvider:
public function register()
{
$this->app->bind('path.public', function () {
return base_path() . DIRECTORY_SEPARATOR .'public_html';
});
}