webpack官方文档分析(二):概念
1、概念
webpack的核心是将JavaScript应用程序的静态捆绑模块。当webpack处理您的应用程序时,它会在内部构建一个依赖关系图,它映射您的项目所需的每个模块并生成一个或多个包。
从版本4.0.0开始,webpack不需要配置文件来捆绑您的项目,但它可以非常灵活地配置以更好地满足您的需求
(1)Entry:
一个entry point指示哪个模块的WebPack应该使用开始建立了它的内部依赖关系图,将的WebPack找出entry point取决于(直接或间接)哪些其他模块和库。
默认情况下,其值为./src/index.js,但您可以通过在webpack配置中配置entry属性来指定不同的(或多个入口点)。例如:
webpack.config.js
module.exports = {
  entry: './path/to/my/entry/file.js'
};
(2)Output:
  output 属性告诉WebPack哪里在哪里发出它创建的包以及如何命名这些文件。,默认./dist/main.js主输出文件,以及将其他生成的文件输出到./dist文件夹。
您可以配置中指定输出文件夹:
webpack.config.js
const path = require('path');
module.exports = {
  entry: './path/to/my/entry/file.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'my-first-webpack.bundle.js'
  }
};
在上面的示例中,我们使用output.filename和output.path属性来告诉webpack我们的bundle的名称以及我们希望它发送到的位置。在顶部导入的路径模块,它是一个Node.js核心的模块,用于操作文件路径。
(3)Loaders
开箱即用,webpack只能理解JavaScript文件。Loaders允许WebPack处理其他类型的文件,并将它们转换成可被应用程序识别并添加到依赖图中的有效模块。
在较高级别,加载器在您的webpack配置中有两个属性:
- 该test属性标识应转换的文件。
- 该use属性指示应使用哪个加载程序进行转换。
webpack.config.js
const path = require('path');
module.exports = {
  output: {
    filename: 'my-first-webpack.bundle.js'
  },
  module: {
    rules: [
      { test: /\.txt$/, use: 'raw-loader' }
    ]
  }
};
上面的配置rules为具有两个必需属性的单个模块定义了一个属性:test和use。这告诉webpack的编译器如下
“嘿webpack编译器,当你遇到解析为require()/ importstatement语句中'.txt'文件的路径时,在将它添加到bundle之前使用它raw-loader来转换它。”
重要的是要记住,在webpack配置中定义规则时,您要在其下定义规则,module.rules而不是rules。为了您的便利,webpack会在不正确的情况下发出警告。
(4)Plugins
虽然加载器用于转换某些类型的模块,但可以利用插件执行更广泛的任务,如捆绑优化,资产管理和环境变量注入。
  要使用插件,您需要将require()添加到plugins数组中。大多数插件都可以通过选项进行自定义。由于您可以在配置中多次使用插件用于不同目的,因此您需要通过使用new运算符调用它来创建它的实例。
webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm
const webpack = require('webpack'); //to access built-in plugins
module.exports = {
  module: {
    rules: [
      { test: /\.txt$/, use: 'raw-loader' }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({template: './src/index.html'})
  ]
};
在上面的示例中,html-webpack-plugin为您的应用程序生成一个html文件,自动注入所有生成的包
(5)Mode
  通过设定mode参数设置为development,production或者none,您可以启用对应于每个环境的WebPack内置的优化。默认值为production。
module.exports = {
  mode: 'production'
};
(5)浏览器兼容性
webpack支持所有符合ES5标准的浏览器(不支持IE8及以下版本)。WebPack需要Promise的import()和require.ensure()。如果要支持旧版浏览器,则需要在使用这些表达式之前加载polyfill。
webpack官方文档分析(二):概念的更多相关文章
- webpack官方文档分析(三):Entry Points详解
		1.有很多种方法可以在webpack的配置中定义entry属性,为了解释为什么它对你有用,我们将展现有哪些方法可以配置entry属性. 2.单一条目语法 用法: entry: string|Array ... 
- webpack官方文档分析(一):安装
		一:安装 1.首先要安装Node.js->node.js下载 2.本地安装 要安装最新版本或特定版本,运行如下: npm install --save-dev webpack npm insta ... 
- 转:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述
		原文地址:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述 ArcGIS JavaScript API允许在地图上绘制graphic(图形) ... 
- OKHttp 官方文档【二】
		OkHttp 是这几年比较流行的 Http 客户端实现方案,其支持HTTP/2.支持同一Host 连接池复用.支持Http缓存.支持自动重定向 等等,有太多的优点. 一直想找时间了解一下 OkHttp ... 
- Gora官方文档之二:Gora对Map-Reduce的支持
		参考官方文档:http://gora.apache.org/current/tutorial.html 项目代码见:https://code.csdn.net/jediael_lu/mygoradem ... 
- Gora官方文档之二:Gora对Map-Reduce的支持                                                    分类:            C_OHTERS             2015-01-31 11:27    232人阅读    评论(0)    收藏
		参考官方文档:http://gora.apache.org/current/tutorial.html 项目代码见:https://code.csdn.net/jediael_lu/mygoradem ... 
- webpack新手名词解释……妈妈再也不担心我看不懂webpack官方文档了
		__dirname : 在任何模块文件内部,可以使用__dirname变量获取当前模块文件所在目录的完整绝对路径. path.resolve(): 方法将一系列路径或路径段解析为绝对路径. 语法: p ... 
- surprise库官方文档分析(二):使用预测算法
		1.使用预测算法 Surprise提供了一堆内置算法.所有算法都派生自AlgoBase基类,其中实现了一些关键方法(例如predict,fit和test).可以在prediction_algorith ... 
- webpack官方文档学习
		一.webpack是什么? webpack是一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来使用和处理. 二.安装 前提条 ... 
随机推荐
- 本地连接Linux工具
			连接Linux命令 finaXshell 工具好用: 链接:https://pan.baidu.com/s/13yyOhi7GzcZNTxXseGO_fA 提取码:n4t6 上次Linux 文件工具: ... 
- mysql+canal+kafka+elasticsearch构建数据查询平台
			1. 实验环境 CPU:4 内存:8G ip:192.168.0.187 开启iptables防火墙 关闭selinux java >=1.5 使用yum方式安装的java,提前配置好JAVA_ ... 
- postgresql11解压版安装windows
			一.准备安装包 下载地址:https://www.postgresql.org/download/windows/ 二.创建data目录(用于存储数据) 三.进入bin目录执行命令..初始化数据库并设 ... 
- C#面向对象15 多态
			多态 概念:让一个对象能够表现出多种的状态(类型) 实现多态的3种手段:1.虚方法 2.抽象类 3.接口 1.虚方法 步骤:1.将父类的方法标记为虚方法,使用关键字 virtual,这个函数可以被子类 ... 
- 小程序setData方法使用总结
			做了一下小程序setData使用方法总结,如有错误,请不吝指出,Thanks♪(・ω・)ノ //示例data: data:{ user:'young', obj:{ name:'蓝色蒲公英', ag ... 
- 1 .net中自定义事件的步骤
			1 申明一个自定义的类并且继承事件的基类 public class ClientSocketModelConnectedEvent:EventArgs { private string param; ... 
- Java学习笔记【八、数据结构】
			参考资料: http://www.cnblogs.com/janneystory/p/5758958.html array arraylist list linklist的区别 http://www. ... 
- Winfrom TextBox 添加水印文字 + 字体颜色
			using System.Drawing; using System.Windows.Forms; namespace KK.WaterMark.Control { public partial cl ... 
- 开关灯 ToggleButton
			开关灯 ToggleButton textOn:对应true的时候:textOff:对应false的时候:给toggleButton设置监听器toggleButton.setOnCheckChange ... 
- QTP(14)
			练习1.Flight4a 要求: a.录制Flight4a登录+退出业务流程 b.使用自定义检查结合Exist属性验证登录是否成功 c.为用户名实现参数化 用户名 Jack 正确 Rose 正确 12 ... 
