将webpack1升级为webpack2的一些总结

/**
* webpack2配置
*/

var
webpack = require('webpack'); var path = require('path'); var HtmlWebpackPlugin = require('html-webpack-plugin'); var OpenBrowserPlugin = require('open-browser-webpack-plugin'); module.exports = { devServer: { historyApiFallback: true, contentBase: "./", quiet: false, //控制台中不输出打包的信息 noInfo: false, hot: true, //开启热点 inline: true, //开启页面自动刷新 lazy: false, //不启动懒加载 //progress: true, //显示打包的进度,webpack2中没有该配置项 watchOptions: { aggregateTimeout: 300 }, host: 'localhost', port: 8088, //设置端口号 //代理其实很简单的,只要配置这个参数就能够了 proxy: { } }, entry: [ // 'webpack/hot/dev-server', // 'webpack-dev-server/client?http://localhost:8088',webpack2注释 path.resolve(__dirname, 'src/index.js') ], output: { path: path.join(__dirname, "dist/"), filename: 'bundle.js', publicPath: '/dist/' }, module: { rules: [ { test: /\.js[x]?$/, exclude: /node_moudle/, include: path.join(__dirname, './src'), loader: 'babel-loader', options: { presets: [ "es2015", "react", "stage-2" ], "plugins": [ ["import", { "libraryName": "antd", "style": "css" }] ] } }, { test: /\.css$/, use: ['style-loader','css-loader'] }, { test: /\.(png|jpg)$/, loader: 'url-loader', options: { limit: 8129 } }, { test: /\.scss$/, use: ['style-loader','css-loader','sass-loader'] }, ] }, plugins: [ new HtmlWebpackPlugin({ title: 'webpack-demos', filename: 'dev.html', template: 'index.html', inject: 'body', minify: false, hash: false, cache: false, showErrors: false }), new OpenBrowserPlugin({ url: 'http://localhost:8088' }), new webpack.DefinePlugin({ }), new webpack.HotModuleReplacementPlugin() ], resolve: { extensions: [".js", ".json"], modules: ['node_modules'] }, devtool: 'source-map' }

 

将webpack1升级为webpack2的时候,总结:css

  • webpack和webpack-dev-server的版本须要更新到@2.x版本
  • 2的devServer中配置参数有变更,例如progress被取消
  • entry中不须要
    'webpack/hot/dev-server'和'webpack-dev-server/client?http://localhost:8088'
  • module.loaders升级为module.rules(虽然前者依旧被保留可用,可是此处遵循2的新特性规范)
  • 原query字段被取消,现使用options,而且使用options的地方须要配合使用loader,没有options的地方使用use
  • 原先的加载器不强求些“-loader”,如今须要强制加上
  • 原先的加载器能够经过“!”级连,如今不能够
  • 原先加载器后能够使用“?***”,如今取消,统一使用options
  • 原先的resolve.extensions[0]能够为空,现不能够
  • resolve.modulesDirectories字段改成resolve.modules字段

 

贴上相同需求下的webpack1的配置html

/**
* webpack1配置
*/
var
webpack = require('webpack'); var path = require('path'); var HtmlWebpackPlugin = require('html-webpack-plugin'); var OpenBrowserPlugin = require('open-browser-webpack-plugin'); module.exports = { devServer: { historyApiFallback: true, contentBase: "./", quiet: false, //控制台中不输出打包的信息 noInfo: false, hot: true, //开启热点 inline: true, //开启页面自动刷新 lazy: false, //不启动懒加载 progress: true, //显示打包的进度 watchOptions: { aggregateTimeout: 300 }, host: 'localhost', port: 8088, //设置端口号 //代理其实很简单的,只要配置这个参数就能够了 proxy: { } }, entry: [ 'webpack/hot/dev-server', 'webpack-dev-server/client?http://localhost:8088', path.resolve(__dirname, 'src/index.js') ], output: { path: path.join(__dirname, "dist/"), filename: 'bundle.js', publicPath: '/dist/' }, module: { loaders: [ { test: /\.js[x]?$/, exclude: /node_moudle/, include: path.join(__dirname, './src'), loader: 'babel-loader', query: { presets: [ 'es2015', 'react', 'stage-2' ] } }, { test: /\.css$/, loader: 'style-loader!css-loader' }, { test: /\.(png|jpg)$/, loader: 'url-loader', query: { limit: 8129 } }, { test: /\.scss$/, loader: 'style-loader!css-loader!sass-loader' }, ] }, plugins: [ new HtmlWebpackPlugin({ title: 'webpack-demos', filename: 'dev.html', template: 'index.html', inject: 'body', minify: false, hash: false, cache: false, showErrors: false }), new OpenBrowserPlugin({ url: 'http://localhost:8088' }), new webpack.DefinePlugin({ }), new webpack.HotModuleReplacementPlugin() ], resolve: { extensions: ['', '.web.js', '.js', '.jsx', '.json'], root: [ path.resolve('./src') ], modulesDirectories: ['node_modules'] }, devtool: 'source-map' }

 

按需加载的配置node

npm install babel-plugin-import --save-devreact

"plugins": [ ["import", { "libraryName": "antd", "style": "css" }] ] // style: true的时候加载lesswebpack

相关文章
相关标签/搜索