WebPack2配置随记

本文记录了使用Webpack2进行前端项目配置的经验,包括安装组件、热加载设置、DllPlugin的使用以提升打包速度,以及在开发和生产环境中的不同配置。通过DefinePlugin设置环境变量,使用HtmlWebpackPlugin自动生成HTML,利用ExtractTextPlugin分离CSS,借助HotModuleReplacementPlugin实现热更新,详述了Webpack2配置的各个方面。
摘要由CSDN通过智能技术生成

接触前端还不到一年,之前公司有一个UI的工程由我来独立完成,犹豫了几秒后决定选用react,花几天时间看完了阮一峰老师的React 技术栈系列教程就开始动手了,其中在webpack的配置上花了很多时间,因此整理了一下当成一个学习笔记吧

webpack2大部分的配置还是和webpack1一样,官方文档中有一篇从1迁移到2的指南

一、安装webpack相关组件以及热加载模块
npm install -D webpack webpack-dev-middleware webpack-dev-server webpack-hot-middleware babel-preset-react-hmre

在webpack1的时候是使用的react-hot-loader,后来无意间发现了这篇文章The Death of React Hot Loader(只看懂了标题),果断弃用之,选用react-transform-hmr

二、配置实例

如下方的简单示例

const webpack = require('webpack');
module.exports = {
  entry: {
    app: 'entrance.js'
  },
  output: {
    path: 'fvrd/dist',
    filename: '[name].js',
  },
  module: {
    rules:[{
      test: /\.css$/,
      use:['style-loader', 'css-loader']
    }],
  },
  plugins: [
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: JSON.stringify('production')
      }
    })
  ],
};
  1. entry是页面入口文件配置,Webpack 会分析入口文件,解析包含依赖关系的各个文件,当入口文件不止一个时,可以将其配置为数组,output 是输出项配置,如例子中的输出为app.js
  2. module为加载器配置,例子中定义了.css文件的加载规则,会生成style标签放在head中。webpack1的时候use中的-loader后缀可以不写,webpack2必须要写
  3. plugins为插件配置,例子中定义了一个环境变量,在代码中console.log(process.env.NODE_ENV)将打印production
三、重要的插件
  • DefinePlugin
    注入环境变量,如在代码中需要开发和生产环境执行不一样的代码,可以使用此插件
new webpack.DefinePlugin({
  'process.env': {
     NODE_ENV: JSON.stringify('production')
   }
 })
 //代码中
 if(process.env.NODE_ENV==='production'){
    //do something
 }else{
    //do something
 }
  • DllPlugin DllReferencePlugin
    解决打包速度慢的大招。第三方库是不经常变动的,在一个配置文件中使用DllPlugin把第三方库或者自己写的公共组件打包在一起并生成一个json文件,在另外一个配置文件中使用DllReferencePlugin就不会重复打包第三方库了。缺点是至少需要两个webpack配置文件
//一个配置文件
entry: {
    lib: ['react','react-dom','react-router','redux','...'],
}
new webpack.DllPlugin({
     path: path.join(__dirname, 'fvrd/dist/manifest.json'),
     name: '[name]',//在这个例子中将生成lib.js
     context: __dirname,
})
//另一个配置文件
new webpack.DllReferencePlugin({
  context: __dirname,
  manifest: require('./fvrd/dist/manifest.json'),
})
  • ProvidePlugin
    用来定义全局变量
//以后使用jquery无需再require('jquery')
new webpack.ProvidePlugin({
 $: 'jquery',
  jQuery: 'jquery',
  'window.jQuery': 'jquery',
  'window.$': 'jquery',
})
  • UglifyJsPlugin
    压缩代码
new webpack.optimize.UglifyJsPlugin({
  //压缩代码
  output: {
    comments: false, //不移除注释
  },
  compress: {
    warnings: false//忽略警告,某些没有用到的组件在打包时会被移除,这时会产生警告,无需在意,webpack1默认true,webpack2默认false
  },
})
  • HtmlWebpackPlugin
    非默认组件,需要一个默认的index.html,js和css会自动插入此模板,不过通过DllPlugin生成的公共包需要自己手动引入
//npm install html-webpack-plugin --save-dev
let HtmlWebpackPlugin = require('html-webpack-plugin');
//...
new HtmlWebpackPlugin({
  favicon:'./src/images/icon_logo.png', //favicon路径
  filename: '../index.html', //生成的html存放路径,相对于 path
  template: './src/template/index.html', //html模板路径
  inject: true,
  hash: true,
  minify: {
  //压缩HTML文件
    removeComments:true,    //移除HTML中的注释
    collapseWhitespace:true    //删除空白符与换行符
  }
})
  • ExtractTextPlugin
    主要用来将css文件分离开
//webpack2需要安装beta版
//npm install --save-dev extract-text-webpack-plugin@beta
let ExtractTextPlugin = require('extract-text-webpack-plugin
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
webpack的完整配置包括以下几个方面: 1. 安装webpackwebpack-cli:首先,你需要在项目中安装webpackwebpack-cli。你可以使用以下命令来安装它们:`npm install --save-dev webpack webpack-cli`。这样可以确保在项目中使用webpack。 2. 创建webpack配置文件:接下来,你需要创建一个名为`webpack.config.js`的文件,并在其中编写webpack配置。这个配置文件是一个JavaScript模块,它需要导出一个包含配置选项的对象。在这个配置文件中,你可以定义入口文件、输出文件、加载器和插件等。 3. 配置入口文件和输出文件:在webpack配置中,你需要指定一个或多个入口文件和一个输出文件。入口文件是你项目中的主要文件,它将作为webpack的起点。输出文件是webpack生成的打包文件,它将包含所有的模块和依赖关系。 4. 配置加载器和插件:webpack提供了丰富的加载器和插件,用于处理不同类型的文件和执行其他任务。加载器用于处理非JavaScript文件,比如将CSS转换为JavaScript模块,或者将ES6代码转换为ES5代码。插件可以用于执行额外的任务,比如压缩代码、提取公共模块或生成HTML文件。 5. 配置开发服务器和热模块替换:webpack还提供了开发服务器和热模块替换功能,以便在开发过程中实时预览和更新代码。你可以在配置中指定服务器的地址、端口和代理等选项,以及启用热模块替换。 6. 配置其他选项:除了上述内容之外,你还可以配置其它选项,比如优化输出、指定模块查找路径、设置环境变量等。 总结起来,webpack的完整配置包括安装webpackwebpack-cli、创建配置文件、配置入口文件和输出文件、配置加载器和插件、配置开发服务器和热模块替换,以及其他选项的配置。你可以根据你的项目需求和具体情况来编写和调整这些配置项。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值