2015-06-14 257 views
5

我正在尋找在我的LESS文件中切換IE8模式並自動生成Gulp文件。Can Gulp可以改變LESS變量嗎?

這是我在什麼停下來傳遞一口少(減去了一堆東西):

var IE = true; 

var LESSConfig = { 
     plugins: [ ... ], 
     paths: LESSpath, 
     ie8compat: IE, //may as well toggle this 
     // Set in variables.less, @ie:false; - used in mixin & CSS guards 
     // many variations tried 
     // globalVars: [ { "ie":IE } ], 
     modifyVars:{ "ie":IE } 
    }; 

... 

.pipe(less (LESSConfig)) 

是不是在咕嘟咕嘟支持可變修飾?

我想避免使用gulp-modify 等人,如果可以的話。我想保持構建系統相當抽象的源文件。

回答

1

modifyVars爲我工作現在:

... 

    var LESSConfig = { 
     paths: paths.LESSImportPaths, 
     plugins: [ 
      LESSGroupMediaQueries, 
      LESSautoprefix 
     ], 
     modifyVars: { 
      ie: 'false' 
     } 
    }; 

    var LESSConfigIE = { 
     paths: paths.LESSImportPaths, 
     modifyVars: { 
      ie: 'true' 
     } 
    }; 

    function processLESS (src, IE, dest){ 
     return gulp.src(src) 
     .pipe($.if(IE, $.less(LESSConfigIE), $.less(LESSConfig))) 
     .pipe($.if(IE, $.rename(function(path) { path.basename += "-ie"; }))) 
     .pipe(gulp.dest(dest)) 
    } 

    // build base.css files 
    gulp.task('base', function() { 
     return processLESS(paths.Base + '/*.less', false, paths.dest); 
    }); 

    // build base-ie.css files for IE 
    gulp.task('baseIE', function() { 
     return processLESS(paths.Base + '/*.less', true, paths.dest); 
    }); 
+0

爲什麼這對你的工作?爲什麼這對你有用,但不是我? – Okonomiyaki3000

+0

爲了澄清,這個功能似乎被打破。我的輸出表明'gulp-less'處理較少的文件__first__和__then__追加新的變量。所以你最終得到的是一個變量較少的css文件。顯然,它不起作用。 – Okonomiyaki3000

+0

抱歉,延遲。不知道該說什麼,除了這個繼續爲我工作。我在最新版本。 – Lance

1

因爲我不能讓這與gulp-less工作,它給我變得明顯的globalVarsmodifyVars應用都壞了,我想出了一個不同的方案。

gulp-less處理它之前,您可以使用gulp-append-prepend將變量寫入文件。不那麼優雅,但從正面來看,它確實有效。

事情是這樣的:

gulp.src('main.less') 
    .pipe(gap.prependText('@some-global-var: "foo";')) 
    .pipe(gap.appendText('@some-modify-var: "bar";')) 
    .pipe(less()) 
    .pipe(gulp.dest('./dest/')); 
相關問題