2015-09-10 13 views
5

So sah ich, dass Elixier Autoprefixer nicht automatisch verwendet. So sieht meine Schluckdatei aus:Laravel Elixier und Autoprefixer

var Elixir = require('laravel-elixir'); 
var autoprefixer = require('gulp-autoprefixer'); 
var gulp = require('gulp'); 

Elixir.config.sourcemaps = false; 

gulp.task('sass', function() { 
    return gulp.src('resources/sass/app.scss') 
     .pipe(autoprefixer({ 
      browsers: ['last 2 versions'], 
      cascade: false 
     })) 
     .pipe(gulp.dest('public/css/app.css')); 
}); 

Elixir(function(mix) { 

    // Copy bootstrap.min.js to node vendor directory until it becomes a node module 
    mix.copy('public/vendor/bootstrap-4', 'node_modules/bootstrap-4'); 

    // Combine all vendor scripts 
    mix.scripts([ 
     'bootstrap-4/dist/js/bootstrap.min.js', 
     'vue/dist/vue.min.js' 
    ], 'public/js/vendor.js', 'node_modules'); 

    // Combine all files into one single CSS file 
    mix.task('sass', 'resources/sass/**/*.scss'); 

    // Get rid of cached version 
    mix.version([ 
     'public/js/vendor.js', 
     'public/css/app.css' 
    ]); 

}); 

Aber es gibt immer noch nicht autoprefixer aus. Ich bekomme keine Schluckfehler. Und wenn ich gulp watch ausführen, wird es nicht aktualisiert, wenn ich eine .scss-Datei aktualisiere. Alle meine Sass-Dateien befinden sich unter Ressourcen/Sass

Vielen Dank für jede Hilfe!

Ich habe sogar versucht:

new Task('sass', function() { 
    return gulp.src('resources/sass/app.scss') 
     .pipe(autoprefixer({ 
      browsers: ['last 2 versions'], 
      cascade: false 
     })) 
     .pipe(gulp.dest('public/css/app.css')); 
}) 
.watch('resources/sass/**/*.scss'); 
+0

Seit Bootstrap 4 bereits CSS kompiliert hat, warum nicht nur das? Andernfalls gibt es eine 'mix.sass()' -Funktion, die Sie verwenden könnten, anstatt eine neue Aufgabe zu erstellen. Laravel Elixir verwendet automatisch 'Autoprefixer', es sei denn, du deaktivierst es auch. Sehen Sie das folgende 'Gulpfile.js' Beispiel: https://gist.github.com/divspace/3f952754581babb21c5b –

+1

Ich liebe, wenn die Laravel Dokumente uns in Ruhe lassen. Es gibt überhaupt keinen Doc auf Autoprefixer, aber ich habe darum in [# 372] (https://github.com/laravel/elixir/issues/372) – igorsantos07

Antwort

-2

Ihre gruntfile.js sollte wie folgt aussehen:

var elixir = require('laravel-elixir'); 

elixir(function(mix) { 
    mix 
    .copy('./public/vendor/bootstrap-4', './node_modules/bootstrap-4') 
    .sass('app.scss') 
    .scripts([ 
     './node_modules/bootstrap-4/dist/js/bootstrap.js' 
     './node_modules/vue/dist/vue.js' 
    ], './public/js/app.js') 
    .version([ 
     'css/app.js', 
     'js/app.css' 
    ]); 
}); 

Ihre resources/assets/sass/app.scss Datei sollte wie folgt aussehen:

@import "node_modules/bootstrap-4/scss/bootstrap"; 

Sie werden jetzt eine haben Verzeichnisstruktur wie folgt:

public/build/css/app-**********.css 
public/build/css/app.css.map 
public/build/js/app-**********.js 
public/build/js/app.js.map 
public/css/app.css 
public/css/app.map 
public/js/app.js 
public/js/app.map.js 

Die Sternchen werden [a-z0-9]{10} sein, aber Sie werden sie laden, indem {{ elixir('css/app.css') }} und {{ elixir('js/app.js') }} aufrufen.

+0

gebeten, die Frage zu beantworten oder zu versuchen, dem Kerl korrekten Markup beizubringen ? – igorsantos07

11

Obwohl currentlyundocumented, Laravel Elixier läuft in der Tat Ihre CSS durch Autoprefixer, damit meist Standardeinstellungen ist, gefunden, wie im Paket ist Config.js:

{ 
    ... 
    css: { 
     autoprefix: { 
      enabled: true, 

      options: { 
       browsers: ['last 2 versions'], 
       cascade: false 
      } 
     }, 
    } 
} 

, dass die Konfiguration anzupassen, können Sie die folgenden verwenden sollten:  

elixir.config.css.autoprefix = { 
    enabled: true, //default, this is only here so you know how to disable 
    options: { 
     cascade: true, 
     browsers: ['last 2 versions', '> 1%'] 
    } 
}; 

elixir(function(mix) { 
    ... 
}); 
5

Verwendung dieser Konfigurationen

var elixir = require('laravel-elixir'); 
config.css.autoprefix.options.browsers = ['last 15 versions'] ; 

elixir(function(mix) { 
    mix.sass('index.scss'); 
});