2016-06-24 20 views
8

Próbowałem skonfigurować Webpack za pomocą LESS i Autoprefixer, ale autoprefixer nie działa. Moje pliki css lub mniej nie są automatycznie naprawione. Przykład: display: flex pobyty display: flexAutoprefixer css z pakietem sieci Web

Włożyłem moje WebPACK config poniżej:

var autoprefixer = require('autoprefixer'); 

module.exports = { 
    entry: { 
    bundle: "./index.jsx" 
    }, 
    output: { 
    path: __dirname, 
    filename: "[name].js" 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.jsx$/, 
     exclude: /(node_modules|bower_components)/, 
     loaders: ['react-hot', 'babel-loader'] 
     }, 
     { 
     test: /\.less$/, 
     loader: ExtractTextPlugin.extract("style-loader", "css-loader!postcss-loader!less-loader") 
     }, 
     { 
     test: /\.css$/, 
     loader: ExtractTextPlugin.extract("style-loader", "css-loader!postcss-loader") 
     } 

    ], 
    postcss: function() { 
     return [autoprefixer]; 
    } 
    }, 
    plugins: [ 
    new webpack.BannerPlugin(banner), 
    new ExtractTextPlugin("style.css") 
    ], 
    devtool: 'source-map', 
    devServer: { 
    stats: 'warnings-only', 
    } 
}; 

Odpowiedz

4

Wystąpił problem. Silly me, blok postcss musi znajdować się bezpośrednio pod konfiguracją Webpack, umieściłem go w bloku modułów. Mój błąd.

EDIT: to jest jak powinno być:

var autoprefixer = require('autoprefixer'); 

module.exports = { 
    ... 
    postcss: function() { 
     return [autoprefixer]; 
    } 
    ... 
}; 

Zamiast więc umieszczenie go wewnątrz bloku modułów, miałem umieścić go bezpośrednio pod głównym bloku, jak pokazano powyżej.

+0

czy możesz pokazać przykład? –

+0

@Philll_t, zredagowałem moją odpowiedź dla ciebie :) – wrick17

2

Musisz skonfigurować postcss w WebPACK config dla starszych wersji przeglądarek.

Domyślnym ustawieniem autoprefiksu są dwie ostatnie wersje przeglądarek lub przeglądarek, które mają co najmniej 5% udziału w rynku.

https://github.com/postcss/autoprefixer#browsers

postcss: [ 
    autoprefixer({ 
     browsers: ['last 3 versions', '> 1%'] 
    }) 
    ], 

Mówi, że jesteś wspieranie 3 ostatnie wersje przeglądarek lub przeglądarek, które mają co najmniej 1% udziału w rynku.

+0

Hej, spróbowałem. Ale nadal nie działa. Jakoś to wcale nie jest prefiksem. – wrick17

+0

Czy możesz podać dane wyjściowe z polecenia Webpack. –

+0

to nie thorwing żadnych błędów 'Hash: d630b9d8e940465f3b07 Wersja: WebPACK 1.13.1 Czas: 1772ms aktywami Size Kawałki Chunk Nazwy bundle.js 708 kB 0 [emitowany] wiązki bundle.js.map 816 kB 0 [emitowany] pakiet + 171 ukrytych modułów' – wrick17

0

Miałem podobny problem z Webpack 2.x.x, a właściwości niestandardowe nie są już dozwolone w konfiguracji. Znalazłem rozwiązanie tego innego posta S.O: Using auto prefixer with postcss in webpack 2.0. W przypadku, gdy z jakiegoś nieznanego powodu ten link doprowadziłoby do 404 skompilować najtrafniejsze odpowiedzi tutaj:

WebPACK 2.xx wprowadzony webpack.LoaderOptionsPlugin() wtyczki gdzie trzeba określić wszystkie pluginy opcji ładowarka . Podobnie jak autoprefixer jest wtyczką dla postcss-loader. Musi więc iść tutaj. Nowa konfiguracja powinna wyglądać następująco:

module: { 
    rules: [ 
    { 
     test: /\.scss$/, 
     loaders: ['style-loader', 'css-loader', 'sass-loader', 
     'postcss-loader'] 
    } 
    ] 
}, 

plugins: [ 
    new webpack.LoaderOptionsPlugin({ 
    options: { 
     postcss: [ 
     autoprefixer(), 
     ] 
    } 
    }) 
], 

Ten pracował dla mnie, ale jak wspomniano przez Kreig nie ma potrzeby LoaderOptionsPlugin(). Teraz można przejść bezpośrednio do opcji deklaracji ładowarka:

const autoprefixer = require('autoprefixer'); 

let settings = { 
/*...*/ 
    module: { 
    rules: [{ 
     test: /\.css$/, 
     use: [ 
      /*...other loaders...*/ 
      { 
      loader: 'postcss-loader', 
       options: { 
       plugins: function() { 
        return [autoprefixer] 
       } 
       } 
      } 
      /*...other loaders...*/ 
     ] 
    }] 
    }   
} 
/*...*/ 

Thing jest Próbowałem 2nd z Webpack 2.5.1, ale nie udało się. Kredyty trafiają do Pranesh Ravi i Kreig.

Powiązane problemy