Elixir 版本控制 public 路径
Elixir versioning public path
我正在尝试使用 Elixir 的 version() 方法,我的 'public' 文件夹为 public_html(而不是默认的 'public' 方法)。
我对我的 css 文件进行了版本控制,该文件生成了一个包含清单的构建文件夹 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');
});
在我的 blade 模板中,我使用
<link href="{{ elixir("css/all.css") }}" rel="stylesheet">
问题是长生不老药功能在 'public/build' 文件夹中搜索。我该如何更改它以便搜索 public_html 文件夹?
提前致谢
elixir() 中没有用于更改 public 路径的选项:
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.");
}
选项很少。您可以通过将此添加到 App\Providers\AppServiceProvider
来更改 public 路径
public function register()
{
$this->app->bind('path.public', function() {
return base_path().'/public_html';
});
}
或者您可以创建自己的 elixir 函数或助手 class
示例:
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.");
}
然后您可以稍后在视图中使用它:
{{my_own_elixir('/css/all.css',$path='path to public_html')}}
希望在以后的 elixir 版本中可以包含这个 future。 :)
您忘记覆盖 gulpfile.js
文件中的 publicDir 文件夹,这会将 build
文件夹指向正确的位置,Elixir 使用该位置来确定版本哈希。
elixir.config.publicDir = 'public_html';
完成后,您必须覆盖 Laravel 中的 public_path,Laravel 5 的推荐方法是转到 [=27= 中的 index.php
]文件夹:
下面
$app = require_once __DIR__.'/../bootstrap/app.php';
添加
// set the public path to this directory
$app->bind('path.public', function() {
return __DIR__;
});
你需要做的就是这个
var elixir = require('laravel-elixir');
elixir.config.publicDir = 'public_html';
elixir.config.publicPath = 'public_html';
我正在尝试使用 Elixir 的 version() 方法,我的 'public' 文件夹为 public_html(而不是默认的 'public' 方法)。
我对我的 css 文件进行了版本控制,该文件生成了一个包含清单的构建文件夹 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');
});
在我的 blade 模板中,我使用
<link href="{{ elixir("css/all.css") }}" rel="stylesheet">
问题是长生不老药功能在 'public/build' 文件夹中搜索。我该如何更改它以便搜索 public_html 文件夹?
提前致谢
elixir() 中没有用于更改 public 路径的选项:
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.");
}
选项很少。您可以通过将此添加到 App\Providers\AppServiceProvider
来更改 public 路径public function register()
{
$this->app->bind('path.public', function() {
return base_path().'/public_html';
});
}
或者您可以创建自己的 elixir 函数或助手 class
示例:
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.");
}
然后您可以稍后在视图中使用它:
{{my_own_elixir('/css/all.css',$path='path to public_html')}}
希望在以后的 elixir 版本中可以包含这个 future。 :)
您忘记覆盖 gulpfile.js
文件中的 publicDir 文件夹,这会将 build
文件夹指向正确的位置,Elixir 使用该位置来确定版本哈希。
elixir.config.publicDir = 'public_html';
完成后,您必须覆盖 Laravel 中的 public_path,Laravel 5 的推荐方法是转到 [=27= 中的 index.php
]文件夹:
下面
$app = require_once __DIR__.'/../bootstrap/app.php';
添加
// set the public path to this directory
$app->bind('path.public', function() {
return __DIR__;
});
你需要做的就是这个
var elixir = require('laravel-elixir');
elixir.config.publicDir = 'public_html';
elixir.config.publicPath = 'public_html';