Css 资产管理-在连接和版本控制后维护对相对资产的引用
我知道L5和Elixir仍在开发中,但我很高兴开始考虑重新组织代码的方法。在L5和Elixir的背景下,我认为我的问题更多地与资产管理有关 想澄清应该如何处理连接和版本控制(在我的例子中,我使用Elixir的Css 资产管理-在连接和版本控制后维护对相对资产的引用,css,laravel-5,asset-management,laravel-elixir,Css,Laravel 5,Asset Management,Laravel Elixir,我知道L5和Elixir仍在开发中,但我很高兴开始考虑重新组织代码的方法。在L5和Elixir的背景下,我认为我的问题更多地与资产管理有关 想澄清应该如何处理连接和版本控制(在我的例子中,我使用Elixir的styles()和version())。我遇到的问题是,concat/version之后的新文件将位于一个新文件夹中,打破了原始css或js文件中对资产的任何引用 例如,具有背景图像:url('../img.png')的原始CSS文件将不再工作。我尝试了两种方法,但都不理想,尤其是在供应商插
styles()
和version()
)。我遇到的问题是,concat/version之后的新文件将位于一个新文件夹中,打破了原始css或js文件中对资产的任何引用
例如,具有背景图像:url('../img.png')
的原始CSS文件将不再工作。我尝试了两种方法,但都不理想,尤其是在供应商插件的情况下:
在连接和版本控制时,是否有更实用的方法来管理相对路径?它们是相对路径-因此请保持相对关系 只需将图像移动到
public/build/
目录中,作为gulp
命令的一部分,在视觉化之后。编辑:
我刚刚向Elixir提交了一份申请,所以你可以:
mix.version(
['css/style.css', 'css/vendor/style.css'], //files to be versioned
['fonts', 'css/vendor/icons'] //dependent files/dirs to be copied
);
旧答案: 实际上,如果您单独使用
mix.copy(…)
,就不能使用gulpwatch
,您需要重新编译整个堆栈才能使其正常工作
您可以使用下面的解决方案获得相同的结果,并且不需要重新编译所有内容,因为当您更改版本化文件时,它只会起作用:
var shell = require('gulp-shell');
gulp.task('cp', shell.task(['cp -R public/fonts public/build/',
'cp -R path/to/vendor/dir public/build/vendor/',
'... etc ...']));
elixir(function(mix) {
...
//register a watcher to run 'cp' when you rebuild
mix.task('cp','public/build/**/*.(js|css)');
}
以下是构建版本控制后的Laravel Elixir解决方案。 对于“复制”命令,需要将其引用为完整路径
var elixir = require('laravel-elixir');
/*
|--------------------------------------------------------------------------
| Elixir Asset Management
|--------------------------------------------------------------------------
|
| Elixir provides a clean, fluent API for defining some basic Gulp tasks
| for your Laravel application. By default, we are compiling the Less
| file for our application, as well as publishing vendor resources.
|
*/
elixir(function(mix) {
mix.version('themes/default/assets/css/styles.css')
.copy('public/themes/default/assets/img/', 'public/build/themes/default/assets/img/');
});
我想这就是我在第1点中所说的“手动”的意思。例如,我目前正在运行mix.copy()将每个文件夹从我的资源复制到public/build。不知是否有更好的解决方案?不幸的是,版本任务会删除除版本控制之外的文件夹…:/@KarolFiturski这就是为什么我们将其作为gulp命令的一部分复制到gulpfile.js中,而不是手动复制它们。据我所知,提拉请求从未合并,因此建议使用mix.copy,如果您想使用Laravel Elixir(mix)复制文件,请参阅下面的答案。