以前在简书上看到一个webpack入门(入门Webpack,看这篇就够了),讲得确实很清楚,可是由于博主用的是1.x的版本,和如今广泛默认安装的2.x版本有一些细节上的差距,因此实际使用的时候就会遇到一些坑,对于想入门的小白如我,形成了不小的困扰。因而,干脆整理了一下我遇到的各类报错,以备所需。css
webpack 2.0以后,不能省略后缀-loadernode
最开始直接把postcss写在module.exports的配置里,报错webpack
//webpack配置文件 module.exports = { devtool: 'eval-source-map', entry: __dirname + "/app/main.js", output: {...}, module: { loaders: [ { test: /\.json$/, loader: "json" }, { test: /\.js$/, exclude: /node_modules/, loader: 'babel' }, { test: /\.css$/, loader: 'style-loader!css-loader?modules!postcss-loader' } ] }, postcss: [ require('autoprefixer')//调用autoprefixer插件 ], devServer: {...} }
由于webpack 2.0以后,不容许用户直接修改配置文件,须要把postcss写入到plugins里面。报错信息如图web
因而将postcss部分更改成json
plugins:[ new webpack.LoaderOptionsPlugin({ options:{ postcss: [ require('autoprefixer')//调用autoprefixer插件 ], } }) ]
这时问题又来了,报错,提示语法错误,webpack没有被定义浏览器
要解决这个问题,须要在整个webpack.config.js配置文件头部定义webpackbabel
var webpack = require('webpack');
最终的配置文件以下,此时能够正常运行webpack,看到css中被自动根据浏览器添加了前缀,autoprefixer调用成功app
//webpack配置文件 var webpack = require('webpack'); module.exports = { /*devtool: 'eval-source-map',*/ entry: __dirname + '/app/main.js', output:{ path: __dirname + '/public', filename: 'bundle.js' }, module:{ loaders:[ { test: /\.json$/, loader: "json-loader" }, { test: /\.js$/, exclude: /node_modules/, loader:"babel-loader" }, { test: /\.css$/, loader:"style-loader!css-loader?modules!postcss-loader"//增长modules以后,就会把css的类名传递到组件的代码中,不用担忧在不一样模块中具备相同类名可能形成的问题 } ] }, devServer:{ contentBase: "./public", colors: true, historyApiFallback: true, inline: true }, plugins:[ new webpack.LoaderOptionsPlugin({ options:{ postcss: [ require('autoprefixer')//调用autoprefixer插件 ], } }) ] }
提示uglifyJsPlugin is not a constructorpost
其实只要注意大小写便可。uglify的u要大写。
正确写法:ui
new webpack.optimize.UglifyJsPlugin(),