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.filenameoutput.path属性来告诉webpack我们的bundle的名称以及我们希望它发送到的位置。在顶部导入的路径模块,它是一个Node.js核心模块,用于操作文件路径。

  (3)Loaders

  开箱即用,webpack只能理解JavaScript文件。Loaders允许WebPack处理其他类型的文件,并将它们转换成可被应用程序识别并添加到依赖图中的有效模块。

在较高级别,加载器在您的webpack配置中有两个属性:

  1. test属性标识应转换的文件。
  2. 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为具有两个必需属性的单个模块定义了一个属性:testuse。这告诉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参数设置为developmentproduction或者none,您可以启用对应于每个环境的WebPack内置的优化。默认值为production

module.exports = {
mode: 'production'
};

  (5)浏览器兼容性

webpack支持所有符合ES5标准的浏览器(不支持IE8及以下版本)。WebPack需要Promiseimport()require.ensure()。如果要支持旧版浏览器,则需要在使用这些表达式之前加载polyfill

webpack官方文档分析(二):概念的更多相关文章

  1. webpack官方文档分析(三):Entry Points详解

    1.有很多种方法可以在webpack的配置中定义entry属性,为了解释为什么它对你有用,我们将展现有哪些方法可以配置entry属性. 2.单一条目语法 用法: entry: string|Array ...

  2. webpack官方文档分析(一):安装

    一:安装 1.首先要安装Node.js->node.js下载 2.本地安装 要安装最新版本或特定版本,运行如下: npm install --save-dev webpack npm insta ...

  3. 转:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述

    原文地址:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述 ArcGIS JavaScript API允许在地图上绘制graphic(图形) ...

  4. OKHttp 官方文档【二】

    OkHttp 是这几年比较流行的 Http 客户端实现方案,其支持HTTP/2.支持同一Host 连接池复用.支持Http缓存.支持自动重定向 等等,有太多的优点. 一直想找时间了解一下 OkHttp ...

  5. Gora官方文档之二:Gora对Map-Reduce的支持

    参考官方文档:http://gora.apache.org/current/tutorial.html 项目代码见:https://code.csdn.net/jediael_lu/mygoradem ...

  6. 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 ...

  7. webpack新手名词解释……妈妈再也不担心我看不懂webpack官方文档了

    __dirname : 在任何模块文件内部,可以使用__dirname变量获取当前模块文件所在目录的完整绝对路径. path.resolve(): 方法将一系列路径或路径段解析为绝对路径. 语法: p ...

  8. surprise库官方文档分析(二):使用预测算法

    1.使用预测算法 Surprise提供了一堆内置算法.所有算法都派生自AlgoBase基类,其中实现了一些关键方法(例如predict,fit和test).可以在prediction_algorith ...

  9. webpack官方文档学习

    一.webpack是什么? webpack是一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来使用和处理. 二.安装 前提条 ...

随机推荐

  1. T100——动态更改Label的说明

    例子: #設定科目名稱    IF g_prog = 'aapt300' THEN       CALL cl_set_comp_att_text("lbl_apca036",cl ...

  2. Jmeter之TCP取样器(模拟数据上报压测)

    TCP压测 场景:模拟硬件设备上报数据(登录,心跳,GPS定位数据/光感数据/电量数据),对这个功能进行压测 啰嗦一句:TCP压测很简单,只要调通了一个TCP,后续的逻辑判断就用逻辑控制器和正则处理就 ...

  3. hashMap,hashTable,TreeMap,concurrentHashMap区别

    hashMap: 基于哈希表实现 treeMap: 基于二叉树实现,适用于排序 hashTable: 底层还是HashMap,在方法上加了同步 concurrentHashMap: java7底层通过 ...

  4. feign发送get请求时用复杂类传参

    如题,网上都有做法,只有有些人说的不清楚.而我自己也遇到了其他坑这里记录一下 1.就是网上说的做法: 客户端:application.yml加上配置: feign: httpclient: enabl ...

  5. Scala学习九——文件和正则表达式

    一.本章要点 Source.fromFile(...).getLines.toArray输出文件的所有行; Source.fromFile(...).mkString以字符串形式输出文件内容; 将字符 ...

  6. BZOJ3884题解上帝与集合的正确用法--扩展欧拉定理

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3884 分析 扩展欧拉定理裸题 欧拉定理及证明: 如果\((a,m)=1\),则\(a^{ ...

  7. app hellocharts 柱状图

    app里有个告警数量的柱状图,有点小问题,y轴竟然不是整数 这个改起来到是简单 Axis yAxis = new Axis().setHasLines(true).setTextColor(Color ...

  8. Centos7下查看端口占用

    netstat -nap #会列出所有正在使用的端口及关联的进程/应用 netstat -lnp|grep 5000 这条语句的作用是查询占用5000端口的应用和进程,把5000端口替换成你要过滤的端 ...

  9. OWASP Hakcing Lab在线漏洞环境

    OWASP Hakcing Lab在线漏洞环境   OWASP hakcing-lab 是一个提供免费的远程安全(Web)挑战和 OWASP TOP 10,OWASP WebGoat,OWASP Ha ...

  10. Linux (Ubuntu)使用vi和vim方向键变成了ABCD

    ubuntu下 vi输入方向键会变成ABCD,这是ubuntu预装的是vim tiny版本,安装vim full版本即可解决. 首先,卸载了原有的vim $ sudo apt-get remove v ...