2015-01-05 15 views
5

L5とElixirはまだ開発中ですが、私のコードを再編成する方法について考えるのを楽しみにしています。 L5とElixirの文脈で、私の質問は資産管理ともっと関係していると思います。アセット管理 - 連結およびバージョン管理後の相対資産への参照を維持する

どのように連結とバージョン管理を行うべきかを明確にしたい(私の場合、私はElixirのstyles()version()を使用しています)。私が持っている問題は、concat/versionの後の新しいファイルが新しいフォルダに置かれ、元のcssファイルまたはjsファイルからアセットへの参照をすべて破棄することです。

たとえば、background-image: url('../img.png')の元のCSSファイルは機能しなくなります。 (資産のフォルダごとにmix.copy()を使用して)1対1を超える

  1. 移動に必要な資産:私は物事のカップルを試してみたが、両方は、特にベンダーのプラグインの場合には理想的ではありません、新しいビルドパス(つまり、Elixirのバージョン管理で使用されるビルドパス)に移動します。
  2. は手動でこれらのオプションの両方が、物事が働くようになりますが、私は何かが欠けすることができるかのように、私は感じて絶対パス

を参照するために、各アセットファイル内のパスを編集します。また、javascriptプラグイン(例えば、独自の画像、フォント、スタイルシートなどが付属しているプラ​​グイン)を使用すると、非常に実用的ではありません。

連結とバージョン管理の際に相対パスを管理するためのより現実的な方法はありますか?

+0

ここで同じ感覚...私はそれを処理するための最良の方法についてはよく分からない... – Chuck

答えて

0

EDIT:

あなただけ行うことができますので、私はちょうど、エリクサーにpull requestを提出:

mix.version(
    ['css/style.css', 'css/vendor/style.css'], //files to be versioned 
    ['fonts', 'css/vendor/icons'] //dependent files/dirs to be copied 
); 

OLD ANSWER:

を実際に、あなたが使用している場合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)'); 

} 
+0

言葉のプルリクエストは私が見る限り合併されていないので、Laravel Elixir(Mix)を使ってファイルをコピーしたい場合はmix.copyを使うことをお勧めします。 –

0

これらは相対パスです。したがって、相対的な関係を維持してください。

ビジョンの後、画像をpublic/build/ディレクトリのgulpコマンドの一部として移動してください。

+0

私はそれは私がポイント1すなわちに「手動」でどのような意味だと思います。私は現在mix.copy()を実行して各フォルダを私のリソースからpublic/buildにコピーしています。より良い解決策があるのだろうか? – mistermat

+0

残念ながらバージョンタスクは、バージョン管理以外のフォルダを削除します。/ –

+0

@KarolFiturskiそのため、gulpコマンドの一部としてgulpfile.jsにコピーします。手動でコピーするのではありません。 –

1

はLaravelエリクシールためのソリューションですバージョン管理用にビルドした後 copyコマンドの場合はフルパスとして参照する必要があります。

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/'); 
}); 
関連する問題