次のことを想定した Gulp でタスクを作成しました。
- 複数の CSS ファイルを結合します。
- 不要な CSS を縮小 + 削除します。
url()
ディレクティブなどのパスを修正します。- ソース マップを生成します。
これに対する私の現在のコードは次のとおりです。
var gulp = require("gulp"),
concat = require("gulp-concat"),
cleanCSS = require("gulp-clean-css"),
sourcemaps = require("gulp-sourcemaps");
var styleList = [
"Resources/Include/ionicons/css/ionicons.css",
"Resources/base.css",
"Resources/extra.css",
];
gulp.task("deploy-css", function() {
gulp.src(styleList)
.pipe(sourcemaps.init())
.pipe(concat("style.min.css"))
.pipe(cleanCSS({
debug: true,
compatibility: "ie8",
keepSpecialComments : 0,
target: "Resources/",
relativeTo: "Resources/"
})
)
.pipe(sourcemaps.write())
.pipe(gulp.dest("Resources/"))
});
url()
ファイルから取得したパスの例Resources/Include/ionicons/css/ionicons.css
:
@font-face { font-family: "Ionicons"; src: url("../fonts/ionicons.eot?v=2.0.0");
これは私の現在のファイル構造です:
./Resources/style.min.css // -> Final processed file
./Resources/base.css
./Resources/extras.css
./Resources/Include/ // -> Original CSS files with URL (installed via Bower)
テスト フォルダー: https://dl.dropboxusercontent.com/u/2333896/gulp-path-test.zip (インストールしてから で実行gulp deploy-css
)。
オプションを使用して CSS ファイルに画像またはフォントへの参照が含まれている場合を除いて、ほとんどすべてが期待どおりに機能しurl()
ます。タスクを実行 (およびstyle.min.css
作成) した後、これらの参照は壊れています。元の CSS ファイルにあるパスは変更されていません。
cleanCSS
参照されたファイルがどこにあるかを確認し、パスを自動的に修正することになっていませんか? それを制御するためにオプションtarget
とrelativeTo
使用されていませんか?
どうすればこれを修正できますか? ありがとうございました。