webpack 是一个用于现代javascript应用程序的静态模块打包工具。
https://webpack.docschina.org/concepts/
入口
指示webpack应该使用哪个模块来作为构建其内部依赖图的开始
默认为./src/index.js
配置
1 | module.exports = { |
补充部分
单个入口:entry: string | [string]
1 | module.exports = { |
1 | module.exports = { |
1 | module.exports = { |
对象语法:entry: {
1 | module.exports = { |
描述入口的对象
- dependOn: 当前入口所依赖的入口。它们必须在该入口被加载前被加载。
- filename: 指定要输出的文件名称。
- import: 启动时需加载的模块。
- library: 指定 library 选项,为当前 entry 构建一个 library。
- runtime: 运行时 chunk 的名字。如果设置了,就会创建一个以这个名字命名的运行时 chunk,否则将使用现有的入口作为运行时。
- publicPath: 当该入口的输出文件在浏览器中被引用时,为它们指定一个公共 URL 地址注意:
1
2
3
4
5
6
7
8
9module.exports = {
entry: {
a2: 'dependingfile.js',
b2: {
dependOn: 'a2',
import: './src/app.js',
},
},
};
- runtime 和 dependOn 不应在同一个入口上同时使用
- runtime 不能指向已存在的入口名称
- dependOn 不能是循环引用的
输出
指定webpack在哪里输出它创建的bundle,以及如何命名这些文件
主要输出文件默认值是./dist/main.js,其他生成文件默认放置在./dist文件夹中
配置
1 | const path = require('path'); //它是一个Node.js核心模块,用于操作文件路径 |
多入口output配置
1 | module.exports = { |
Loader
webpack 只能理解 JavaScript 和 JSON 文件,这是 webpack 开箱可用的自带能力。loader 让 webpack 能够去处理其他类型的文件,并将它们转换为有效模块,以供应用程序使用,以及被添加到依赖图中。
在更高层面,在 webpack 的配置中,loader 有两个属性:
- test 属性,识别出哪些文件会被转换。
- use 属性,定义出在进行转换时,应该使用哪个 loader。
配置
1 | const path = require('path'); |
以上配置中,对一个单独的 module 对象定义了 rules 属性,里面包含两个必须属性:test 和 use。这告诉 webpack 编译器(compiler) 如下信息:
_webpack 编译器,当你碰到「在 require()/import 语句中被解析为 ‘.txt’ 的路径」时,在你对它打包之前,先 use(使用)_ raw-loader 转换一下。
css-loader和ts-loader
1 | npm install --save-dev css-loader ts-loader |
1 | module.exports = { |
配置方式
1 | module.exports = { |
插件
用于执行范围更广的任务。包括:打包优化,资源管理,注入环境变量。
1 | const HtmlWebpackPlugin = require('html-webpack-plugin'); // 通过 npm 安装 |
在上面的示例中,html-webpack-plugin 为应用程序生成一个 HTML 文件,并自动注入所有生成的 bundle。
模式
通过选择 development, production 或 none 之中的一个,来设置 mode 参数,你可以启用 webpack 内置在相应环境下的优化。其默认值为 production。
1 | module.exports = { |