webpack实践(二)- webpack配置文件

webpack系列博客中代码均在github上:https://github.com/JEmbrace/webpack-practice
《webpack实践(三)- html-webpack-plugin》
《webpack实践(四)- html-webpack-plugin》


一.前言
前面一篇文章中,我们总结了webpack的安装,并使用webpack提供的cli打包一个简单的index.js文件。
本节将使用webpack配置文件的方式去打包一个文件。
二.使用配置文件打包
1.新建配置文件并写入代码
首先我们需要新建一个配置文件:webpack.config.js(可以起别的名称,后面会提到)
备注:在此之前已经删除了上一节中使用cli打包的index.bundle.js结果文件
  
现在呢,我们可以按照官方文档提供的示例编写的我们的配置文件
var path = require('path');
module.exports = {
  mode: 'development',
  entry: './index.js',
  output: {
    path: path.resolve(__dirname),
    filename: 'index.bundle.js'
  }
};
这个配置文件呢,实际上就是上一节我们的打包命令webpack index.js -o index.bundle.js --mode=development的一个配置文件表现形式。
里面具体的配置稍后会讲,我们先使用这个配置文件打包一下,在验证一下是否和上一节的结果相同。
2.执行打包命令
使用配置文件的打包命令为:webpack --config 配置文件路径和文件名
假如我们的配置文件就在项目根路径下,而且文件名为webpack.config.js,那么就可以省略--config参数直接使用webpack命令进行打包。
因为直接运行webpack命令,webpack会默认在当前目录下查找文件名webpack.config.js的文件作为打包时使用的配置文件。
  
3.查看打包结果
  
可以看到目录下有新生成的index.bundle.js结果文件。其内容和上一节的完全一致,所以我们不贴代码了,直接验证一下打包结果。
4.验证打包结果
上一节的index.html文件我们没有做改动,因此直接在浏览器中访问index.html
  
和上一节是一致的效果。
接着我们解读一下webpack.config.js中的各项。
三.配置文件
1.mode
首先是mode这个配置,它表示对当前的环境的一种配置。它有两种配置:
mode: "development" #开发环境
mode: "production" #生产环境
当我们不配置这个选项的时候,其默认值为production。那这两种配置最直观的不同之处就在于开发环境的代码不提供代码和命名的压缩,而生产环境提供代码和命名压缩。
一般当我们处于项目开发阶段时,可以将该选项配置为development,当产品发布上线后将该选项配置为production。
entry配置有也有多种定义方式,这里我们只介绍两种:单入口语法、单入口对象语法。
单入口语法
    单入口的基本语法:entry: string|Array<string>
我们本次示例中的配置就是使用单入口语法进行配置的。
entry: './index.js',
单入口对象语法
    对象的基本语法:entry: {[entryChunkName: string]: string|Array<string>}
我们将上面的单入口配置改写一下
entry: {
    main: './index.js'
},
备注:entry配置的形式较多,需要根据实际的项目需求去编写代码,本篇只做简单讲解。后续会系列文章会慢慢补充。
3.output
output配置项表示web程序的输出配置。
path
path需要配置一个字符,它表示输出的绝对路径。
一般项目中,输出的结果文件需要放到一个统一的目录下,此时我们可以将path稍作修改
path: path.resolve(__dirname,'dist'),
此时path的值为当前项目目录下的dist,现在项目根目录下运行webpack命令重新打包一下

可以看到,打包完成后生成了dist目录,在该目录下生成了最终的打包结果index.bundle.js。
备注:后续的path配置就这样配置,比较符合平时的项目开发。
filename
filename需要配置传入一个字符串,表示输出的文件名,这个文件最终会写入path指定的路径下。
我们的示例比较简单,入口为单文件,所以输出也为单文件。
四.总结
本篇主要将上一篇文章中命令行式的打包方式转化为webpack配置文件的打包方式,并且简单的讲解了该配置文件中的几个配置项。

webpack实践(二)- webpack配置文件的更多相关文章
- webpack教程(二)——webpack.config.js文件
		首先我们需要安装一个webpack插件html-webpack-plugin,该插件的作用是帮助我们生成创建html入口文件.执行如下命令 npm install html-webpack-plugi ... 
- (webpack系列二)webpack打包优化探索
		虽然webpack的已经升级到了webpack4,而我们目前还在使用webpack3,但其中的优化点都大同小异,升级后同样适用. 性能优化初步原则 减小代码量 减小请求数 最大化利用浏览器缓存 这三条 ... 
- webpack实践总结
		一.Loader写法及执行顺序 从webpack2起,loader的格式如下: module: { rules: [ {test: /\.css$/, use: ['style-loader','cs ... 
- webpack实践(一)- 先入个门
		一.前言 webpack是个啥呢?看官网的这段描述. webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler) 在我以前做纯html.css. ... 
- webpack实践(三)- html-webpack-plugin
		webpack系列博客中代码均在github上:https://github.com/JEmbrace/webpack-practice <webpack实践(一)- 先入个门> < ... 
- webpack实践(四)- html-webpack-plugin
		webpack系列博客中代码均在github上:https://github.com/JEmbrace/webpack-practice <webpack实践(一)- 先入个门> < ... 
- 深入学习webpack(二)
		深入学习webpack(二) 在深入学习webpack(一)中,我通过一个例子介绍了webpack的基本使用方法,下面将更为系统的学习webpack的基本概念,对于一门技术的掌握我认为系统化还是很重要 ... 
- 深入理解webpack(二) webpack-dev-server基本配置
		摘要:webpack-dev-server是一个使用了express的Http服务器,它的作用主要是为了监听资源文件的改变,该http服务器和client使用了websocket通信协议,只要资源文 ... 
- npm scripts + webpack 实践经验(React、Nodejs)
		最近用Webpack+npm scripts+Mongodb+Nodejs+React写了个后台项目,在用Webpack构建过程中遇到了许多坑,就写出来分享一下. 构建工具五花八门,想当年刚学会Gru ... 
随机推荐
- Kafka幂等性原理及实现剖析
			1.概述 最近和一些同学交流的时候反馈说,在面试Kafka时,被问到Kafka组件组成部分.API使用.Consumer和Producer原理及作用等问题都能详细作答.但是,问到一个平时不注意的问题, ... 
- 十一、设备初始化(ADK4.0)
			1.1 首先初始化连接库 sinkConnectionInit();à ConnectionInitEx2(); theCm.task.handler = connectionBluesta ... 
- ubuntu 16.04安装并启动openssh
			对于没有图形界面的linux系统,一般都会用到远程连接控制,,因此新安装的linux系统,在配好网络后,首先要安装的就是远程连接工具,ssh是常用的方法. ps -ef |grep ssh //查看 ... 
- Web Scraper 翻页——利用 Link 选择器翻页 | 简易数据分析 14
			这是简易数据分析系列的第 14 篇文章. 今天我们还来聊聊 Web Scraper 翻页的技巧. 这次的更新是受一位读者启发的,他当时想用 Web scraper 爬取一个分页器分页的网页,却发现我之 ... 
- eNSP仿真软件之配置Trunk口
			实验原理 在以太网中,通过划分VLAN来隔离广播域和增强网络通信的安全性.以太网通常由多台交换机组成,为了使VLAN的数据帧跨越多台交换机传递,交换机之间互连的链路需要配置为干道链路(Trunk Li ... 
- NN入门,手把手教你用Numpy手撕NN(三)
			NN入门,手把手教你用Numpy手撕NN(3) 这是一篇包含极少数学的CNN入门文章 上篇文章中简单介绍了NN的反向传播,并利用反向传播实现了一个简单的NN,在这篇文章中将介绍一下CNN. CNN C ... 
- python3 之 闭包实例解析
			一.实例1: def make_power(y): def fn(x): return x**y return fn pow3 = make_power(3) pow2 = make_power(2) ... 
- Stream系列(四)Sorted方法使用
			排序和反向排序 EmployeeTestCase.java package com.example.demo; import lombok.Data; import lombok.ToString; ... 
- 【Android - 自定义View】之View的工作过程简介
			View的工作过程分为三个过程: View的measure过程: View的layout过程: View的draw过程. 我们知道,一个Activity就是一个窗口,这个窗口中包含一个Window.一 ... 
- Centos 7  启动 Tomcat 7、8 慢的问题
			查看原因 首先查看日志信息,查看因为什么而启动慢 在CentOS7启动Tomcat时,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的.Tocmat的Se ... 
