2015-09-10 51 views
5

所以我看到elixir不会自动使用autoprefixer。这是我的吞咽文件看起来如何:Laravel elixir和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' 
    ]); 

}); 

但它不发布autoprefixer仍然。我没有得到大量的错误。当我运行gulp watch时,它不更新,每当我更新.scss文件。我所有的sass文件都位于资源/ sass

感谢您的任何帮助!

我甚至尝试:

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

由于Bootstrap 4已经编译了CSS,为什么不包括它呢?否则,可以使用'mix.sass()'函数来代替创建新任务。除非您禁用它,Laravel Elixir会自动使用'autoprefixer'。请参阅以下'Gulpfile.js'示例:https://gist.github.com/divspace/3f952754581babb21c5b –

+1

我喜欢Laravel文档让我们独处。 Autoprefixer上没有任何文档,但是我在[#372](https://github.com/laravel/elixir/issues/372) – igorsantos07

回答

-2

gruntfile.js应该是这样的:

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' 
    ]); 
}); 

resources/assets/sass/app.scss文件应该是这样的:

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

你现在有一个目录结构如下:

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 

星号将是[a-z0-9]{10}但你会通过调用{{ elixir('css/app.css') }}{{ elixir('js/app.js') }}加载它们。

+0

中询问过您是在回答问题还是试图教导该人正确的标记? – igorsantos07

11

虽然currentlyundocumented,Laravel的药剂确实通过Autoprefixer运行你的CSS,用它主要是默认设置,在包的Config.js发现:

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

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

要自定义配置,你应该使用下列内容: 

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

使用这种配置

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

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