5

我知道 L5 和 Elixir 仍在开发中,但我很高兴开始思考重组我的代码的方法。在 L5 和 Elixir 的背景下,我认为我的问题更多地与资产管理有关。

想澄清应该如何处理连接和版本控制(在我的例子中,我使用的是 Elixir 的styles()and version())。我遇到的问题是 concat/version 之后的新文件将位于一个新文件夹中,从而破坏了对原始 css 或 js 文件中资产的任何引用。

例如,一个原始的 CSS 文件background-image: url('../img.png')将不再工作。我尝试了几件事,但两者都不理想,尤其是在供应商插件的情况下:

  1. 将所需的资产逐个移动(对资产的每个文件夹使用 mix.copy() )到新的构建路径(即 Elixir 版本控制使用的构建路径)。
  2. 手动编辑每个资产文件中的路径以引用绝对路径

尽管这两种选择都可以使事情奏效,但我觉得我可能会遗漏一些东西。在使用 javascript 插件(例如,带有自己的图像、字体、样式表等的插件)时,它也变得非常不切实际。

在连接和版本控制时,是否有更实用的方法来管理相对路径?

4

3 回答 3

1

这是构建版本控制后 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/');
});
于 2017-09-06T00:10:55.103 回答
0

它们是相对路径 - 所以保持相对关系。

public/build/只需将图像作为命令的一部分移动到目录中gulp,在视觉之后。

于 2015-01-06T03:16:41.180 回答
0

编辑:

我刚刚向 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(...)单独使用,您将无法使用gulp watch,您需要重新编译整个堆栈才能使其正常工作。

您可以使用以下解决方案获得相同的结果,并且不需要重新编译所有内容,因为它只会在您更改版本控制文件时起作用:

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

}
于 2015-08-26T10:00:32.710 回答