当 webpack 处理应用程序时,它会在内部构建一个 依赖图(dependency graph),此依赖图会映射项目所需的每个模块,并生成一个或多个 bundle
1、入口entry
webpack从入口文件开始找与其直接或间接的依赖来构建依赖图。入口可以有多个
module.exports = {
entry: {
app:'./path/index.js'
}
}
2、输出output
定义webpack创建的bundle输出在什么位置,以什么样的名字输出
const path = require('path');
module.exports = {
...
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'first-webpack.bundle.js'
}
}
3、loader
webpack只能识别js和json文件,loader 用于转换某些类型的模块。
通过(loader)预处理函数,loader 为 JavaScript 生态系统提供了更多能力
const path = require('path');
module.exports = {
...
module: {
relus: [
{
test: /\.(tsx|ts)$/,
use: 'babel-loader'
}
]
}
}
4、插件plugin
plugin功能极其强大,可以用来处理各种各样的任务,包括:打包优化,资源管理,注入环境变量等等。
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack'); // 用于访问内置插件
const path = require('path');
module.exports = {
...
plugins: [
new HtmlWebpackPlugin({template: './src/template.html'})
]
}
在上面的示例中,html-webpack-plugin 为应用程序生成 HTML 一个文件,并自动注入所有生成的 bundle。
webpack plugin是一个具有 apply 方法的 JavaScript 对象。apply 方法会被 webpack compiler 调用,并且 compiler 对象可在整个编译生命周期访问。
5、mode
通过选择 development, production 或 none 之中的一个。