2016-09-07 5 views
0

Gulpを使用して、CSSファイルで参照される画像やフォントなどのアセットを特定のディレクトリにコピーする方法はありますか?CSSファイルで参照されるアセットをコピーする

例えば、ブートストラップ3を残りのCSSファイルと一緒にバンドルするときは、フォントをコピーしてURLを新しいディレクトリにリベースする必要があります。

私はこの使用のWebPACKとローダー(style-loadercss-loaderurl-loaderfile-loader)の組み合わせを行うことができますが、このプロジェクトのために私はガルプとそのプラグイン以外の何も使用しないする必要があります。

編集:私はより明確にしようとします。

もう一度Bootstrap 3の例を使用します。そのCSSファイルは、使用するフォントをurl()で参照します。私がする必要があるのは、url()でどのフォントが参照されているのかを確認し、/public/ディレクトリにコピーし、最後にこれらのフォントを正しく処理できるようにrebaseします。url()

+0

あなたはCSSを解析する必要があるようにあなたの質問の最初の部分が鳴り、から参照されるファイルのリストを作成そのリストを使って作業します(おそらく 'gulp.src'のために使用していますか?)。しかし、あなたの質問の2番目の部分は、1)既知のディレクトリからファイルをコピーし、2)いくつかのCSSファイルを実行し、コンパイルされたプロジェクトのフォルダ構造にパスを調整するというように、 //あなたは何をする必要があるかについてもっと詳しく言うことができますか? – henry

+0

質問に追加情報を追加しました。 –

答えて

0

私はgulp-postcssと一緒にpostcss-urlを使って必要なものを達成しました。

"use strict"; 

const Gulp = require("gulp"); 
const GulpRename = require("gulp-rename"); 
const GulpPostCSS = require("gulp-postcss"); 
const PostCSSImport = require("postcss-import"); 
const PostCSSURL = require("postcss-url"); 

Gulp.task("css", function() { 
    return Gulp 
    .src("./assets/css/index.css") 
    .pipe(
     GulpPostCSS([ 
      PostCSSImport(), 
      PostCSSURL({ 
       url: "copy", 
       useHash: true 
      }) 
     ], { 
      from: "./assets/css/index.css", 
      to: "./public/bundle.css" 
     }) 
    ) 
    .pipe(GulpRename("bundle.css")) 
    .pipe(Gulp.dest("./public/")); 
}); 

それだけpostcss-cliと、がぶ飲みせずに完全にこれを行うことも可能である:

"scripts": { 
    "build:css": "postcss ./assets/css/index.css --use postcss-import --use postcss-url --postcss-url.url 'copy' --postcss-url.useHash true --output ./public/bundle.css" 
}, 
関連する問題