WebPack
是一个模块打包工具,你可以使用WebPack
管理你的模块依赖,并编绎输出模块们所需的静态文件。它能够很好地管理、打包Web
开发中所用到的HTML
、Javascript
、CSS
以及各种静态文件(图片、字体等),让开发过程更加高效。对于不同类型的资源,webpack
有对应的模块加载器。webpack
模块打包器会分析模块间的依赖关系,最后 生成了优化且合并后的静态资源
核心概念
入口(entry)
入口起点(entry point)指示webpack
要使用哪个模块作为构建项目的起点,默认为./src/index.js
输出(output)
output 属性告诉webpack
在哪里输出它打包好的代码以及如何命名,默认为./dist
loader (加载器)
webpack 只能理解 JavaScript 和 JSON 文件。loader 让 webpack 能够去处理其他类型的文件,并将它们转换为有效模块。
在 webpack 的配置中 loader 有两个属性:
test
属性,用于标识出应该被对应的 loader 进行转换的某个或某些文件。use
属性,表示进行转换时,应该使用哪个 loader。
插件(plugin)
plugins(插件)作用更大,可以打包优化,资源管理和注入环境变量
模式(mode)
通过选择 development
, production
或 none
之中的一个,来设置 mode
参数,你可以启用 webpack 内置在相应环境下的优化。其默认值为 production
。
基本配置
以安装css-loader
和安装html-webpack-plugin
举例
安装 css-loader
安装 style-loader
和 css-loader
1 | npm i -D style-loader css-loader |
安装 html-webpack-plugin
1 | npm i -D html-webpack-plugin |
修改webpack.config.js**
1 | const path = require('path') |
常用的loader和plugin
常见的Loader
- file-loader:把文件输出到一个文件夹中,在代码中通过相对 URL 去引用输出的文件
- url-loader:和 file-loader 类似,但是能在文件很小的情况下以 base64 的方式把文件内容注入到代码中去
- source-map-loader:加载额外的 Source Map 文件,以方便断点调试
- image-loader:加载并且压缩图片文件
- babel-loader:把 ES6 转换成 ES5
- css-loader:加载 CSS,支持模块化、压缩、文件导入等特性
- style-loader:把 CSS 代码注入到 JavaScript 中,通过 DOM 操作去加载 CSS。
- eslint-loader:通过 ESLint 检查 JavaScript 代码
常见的plugin
- define-plugin:定义环境变量
- html-webpack-plugin:简化html文件创建
- uglifyjs-webpack-plugin:通过
UglifyES
压缩ES6
代码 - webpack-parallel-uglify-plugin: 多核压缩,提高压缩速度
- webpack-bundle-analyzer: 可视化webpack输出文件的体积
- mini-css-extract-plugin: CSS提取到单独的文件中,支持按需加载
参考链接