# Webpack4
## 安装
> webpack 4默认不需要配置文件(它吸收了Parcel的思想,零配置)
> - npm i -D webpack
> - npm i -D webpack-cli
## 使用
1.入口点/输出文件
```
//package.json
"scripts": {
"build1": "webpack"
}
//cmd
npm run build1
//报错: ERROR in Entry module not found: Error: Can't resolve './src' in '~/webpack-4-quickstart'
```
说明webpack4正在寻找./src中的入口点(入口点是webpack寻找开始构建Javascript包的文件)
**webpack 4中,不需要定义入口点和输出文件**
**webpack 4将./src/index.js作为默认入口点。 而且,它会在./dist/main.js中吐出这个包**
2.生产模式和开发模式
**webpack4无需任何配置文件**
**只需定义--mode标记,即可免费获得一切**
```
"scripts": {
"dev":"webpack --mode development",
"build":"webpack --mode production"
}
```
> webpack1/2/3一般拥有2个配置文件
> - 开发配置文件: 用于定义webpack dev服务器和其他东西
> - 生产配置文件: 用于定义UglifyJSPlugin和sourcemaps等
## 更多特性
> - sideEffects 设置 —— 在打包体积上巨大的胜利
> - 支持 JSON 和 Tree Shaking
> - 升级到 UglifyJS2
> - 模块类型的引入 + 支持 .mjs
> - javascript/auto: (在 webpack 3 默认启用) 启用了所有的 Javascript 模块系统:CommonJS,AMD,ESM
> - javascript/esm: EcmaScript 模块,所有的其他模块系统不可用(默认 .mjs 文件)
> - javascript/dynamic: 只有 CommonJS 和,EcmaScript 模块不可用
> - json: JSON 数据,它可以通过 require 和 import 来引入使用(默认 .json 的文件)
> - webassembly/experimental: WebAssembly模块(当前为 .wasm 文件的实验文件和默认文件)
> - 另外 webpack 现在支持查找 .wasm, .mjs, .js 和 .json 拓展文件来解析
> - 支持 WebAssembly
> - 去除 CommonsChunkPlugin