biji/前端/webpack.md
2020-02-02 15:33:37 +08:00

106 lines
2.2 KiB
Markdown

# webpack
> 这是个人学习webpack笔记
## 概念
webpack是一个静态文件打包器
他会递归生成一个依赖树 然后生产呢个一个或多个包(bundel)
### 需要了解四个概念
1. 入口
2. 输出
3. loader 加载
4. 插件
### 入口
入口是指webpack应在那个文件开始处理依赖图
然后输出到一个叫bundles(包)文件中
可以使用entry属性 定义入口
```
module.exports = {
entry: './path/to/my/entry/file.js'
};
```
### 出口
出口是告诉webpack将所打包成功的 bundel输出到哪个位置 以及如何命名
默认为./dist
可以使用output定义
```
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'
}
};
```
path 输出目录
filename 输出文件名
### loader
loder 可以让webpack处理javascript文件之外的
默认webpack只可以处理javascript文件
loader将其他文件转化为webpack可以处理的有效模块文件
webpack loader配置有两个目标
- test属性 用来标识要处理的某个文件或某些文件
- use属性 表示转换时 用到那一个koader
```
const path = require('path');
const config = {
output: {
filename: 'my-first-webpack.bundle.js'
},
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
}
};
module.exports = config;
```
定义时需要写道module.rules中
### 插件
loader可以作为转换某种类型的模块
插件可以做各式各样的工作?
引用插件 先require()
然后加入到plugis数组中
```
const HtmlWebpackPlugin = require('html-webpack-plugin'); // 通过 npm 安装
const webpack = require('webpack'); // 用于访问内置插件
const config = {
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
},
plugins: [
new HtmlWebpackPlugin({template: './src/index.html'})
]
};
module.exports = config;
```
### 模式
通过选择 ``` develompment ``` 与 ``` production ```之中的一个
```
module.exports = {
mode: 'production'
};
```
## 入口起点
> 在webpack中有多种定义entry的方法
### 单个入口起点
config
```
const config = {
entry: './path/to/my/entry/file.js'
};
module.exports = config;
```