laravel - que - Ruta pública de control de versiones de Elixir
laravel yield example (3)
Estoy tratando de usar el método de versión () de Elixir con mi carpeta ''pública'' como public_html (en lugar del método ''público'' predeterminado).
Puedo versionar mi archivo css, que produce una carpeta de compilación con el manifiesto dentro de public_html
elixir.config.cssOutput = ''public_html/css'';
elixir.config.jsOutput = ''public_html/js'';
elixir(function(mix) {
mix.styles([
''vendor/normalize.css'',
''app.css''
], null, ''public_html/css'');
mix.version(''public_html/css/all.css'');
});
En mi plantilla de blade utilizo
<link href="{{ elixir("css/all.css") }}" rel="stylesheet">
El problema es que la función elixir busca en la carpeta ''public / build''. ¿Cómo puedo cambiar esto para que busque la carpeta public_html?
Gracias de antemano
No hay ninguna opción en elixir () para cambiar la ruta pública:
function elixir($file)
{
static $manifest = null;
if (is_null($manifest))
{
$manifest = json_decode(file_get_contents(public_path().''/build/rev-manifest.json''), true);
}
if (isset($manifest[$file]))
{
return ''/build/''.$manifest[$file];
}
throw new InvalidArgumentException("File {$file} not defined in asset manifest.");
}
Hay solo algunas opciones. Puede cambiar la ruta pública agregando esto a App / Providers / AppServiceProvider
public function register()
{
$this->app->bind(''path.public'', function() {
return base_path().''/public_html'';
});
}
o puedes crear tu propia función de elixir o una clase de ayuda
Ejemplo:
function my_own_elixir($file,$path=public_path())
{
static $manifest = null;
if (is_null($manifest))
{
$manifest = json_decode(file_get_contents($path.''/build/rev-manifest.json''), true);
}
if (isset($manifest[$file]))
{
return ''/build/''.$manifest[$file];
}
throw new InvalidArgumentException("File {$file} not defined in asset manifest.");
}
Luego puedes usar esto más adelante a la vista:
{{my_own_elixir(''/css/all.css'',$path=''path to public_html'')}}
Esperemos que en la futura versión del elixir se incluya este futuro. :)
Se olvidó de sobrescribir su carpeta publicDir en el archivo gulpfile.js
, esto apunta a la carpeta de build
a la ubicación correcta que elixir usa para determinar el hash de la versión.
elixir.config.publicDir = ''public_html'';
Después de hacerlo, debe sobrescribir su public_path en Laravel, la forma recomendada para que Laravel 5 sea ir al index.php
en su carpeta pública:
Debajo
$app = require_once __DIR__.''/../bootstrap/app.php'';
Añadir
// set the public path to this directory
$app->bind(''path.public'', function() {
return __DIR__;
});
todo lo que necesitas hacer es esto
var elixir = require(''laravel-elixir'');
elixir.config.publicDir = ''public_html'';
elixir.config.publicPath = ''public_html'';