首页 > 建站教程 > 前端框架 >  webpack5学习笔记:watch、webpack-dev-server正文

webpack5学习笔记:watch、webpack-dev-server

# webpack watch 详解


## 安装、初始化

1. npm init 初始化项目生成package.json

2. 安装webpack和webpack-cli

`npm install webpack webpack-cli -D`

3. 新建入口文件:src/index.js

4. 创建`webpack.config.js`,代码如下:

```

const path = require('path')

module.exports = {

    entry: './src/index.js',

    output: {

        filename: 'bundle.js',

        path: path.resolve(__dirname, './build')

    }

}

```

5. `package.json` 中配置打包命令:

```

"scripts": {

    "build": "webpack"

},

```

6. 建立 html 模板文件,如 public/index.html,代码如下:

```

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title><%= htmlWebpackPlugin.options.title %></title>

</head>

<body>

    

</body>

</html>

```

7. 安装 html处理插件

`npm install html-webpack-plugin -D`

8. 在 webpack.config.js 的 plugins 中配置 html-webpack-plugin 插件

```

const path = require('path')

const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {

    entry: './src/index.js',

    output: {

        filename: 'bundle.js',

        path: path.resolve(__dirname, './build')

    },

    plugins: [

        new HtmlWebpackPlugin({

            title: '页面标题',

            template: './public/index.html'

        })

    ]

}

```

9. 运行打包命令:

`npm run build`


    此时的问题:不能实时编译文件,不能实时提示代码错误



# watch使用


## 启动命令配置如下:

"scripts": {

    "build": "webpack",

    "watch": "webpack --watch"

},


    此时,写完代码即可自动编译,配合 vscode 的 Live Server插件,能做到实时刷新。


## 在 webpack.config.js 中配置:

```

module.exports = {

    watch: true, // 实时编译

}

```

    此时,运行 `npm run build` 也能做到自动编译


## watch 的优劣:

1. watch方案监听文件的变化,实时自动打包

2. 通过 vscode 的 Live Server 提供本地服务,并自动刷新

3. 它对源代码每次都重新打包

4. 编译成功后,都会重新生成文件,文件操作(file system 效率不高)

5. Live Server属于VSCODE插件,用其他IDE,还要重新解决本地服务和热更新。

6. Live Server每次都是刷新整个页面,即使只动了一点点代码



# webpack-dev-server (WDS) 详解

## 安装

`npm install webpack-dev-server -D`


## package.json 配置

"scripts": {

    "build": "webpack",

    "dev": "webpack serve"  // 或者  webpack server 也可以

},


## 运行

`npm run dev`

    此时,会自动启动服务。

但是会报 “The 'mode' option has not been set, webpack will fallback to 'production' for this value.”,显示在页面上,这是因为 webpack.config.js 没有配置 mode 选项

    而且,它不会产生文件和文件夹,而是利用 memfs插件,读写内存,比读取文件更加快

    它是通过 express 开启本地服务的

    注意:此时,页面更新,仍旧是刷新整个页面,后续会有相关配置来解决这个问题



# webpack-dev-middleware 了解