webpack自动化打包webpack-dev-server

这篇具有很好参考价值的文章主要介绍了webpack自动化打包webpack-dev-server。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在前面的章节中我们每次改完要打包的资源文件,和配置文件都是是输入npx webpack命令手动打包的,那么有没有什么办法可以监听到我们代码的改动,在保存时就自动打包呢?

答案是当然有,不然哪些框架的脚手架是怎么实现保存自动打包的呢,这就是本章要介绍的内容,webpack-dev-server插件,自动打包

一、什么是webpack-dev-server

Webpack Dev Server是一个基于Node.js构建的Web服务器,它可以在本地开发环境中启动一个实时的Web服务器,并且能够自动编译并且刷新浏览器,为前端开发提供了很大的便利。

Webpack Dev Server支持热模块替换(HMR),即在应用程序运行中更新模块而无需刷新整个页面,它还提供了一些其它的特性包括压缩、编译、转换、代码分离等等。Webpack Dev Server通常用来搭建本地开发环境,而部署时则需要使用其它的Web服务器

二、在webpack中配置

1. 下载安装

npm i webpack-dev-server -D

2. 在webpack.config.js中配置使用
const path = require("path");
module.exports = {
  entry: "./src/main.js",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "js/main.js", // 将 js 文件输出到 static/js 目录中
  },
  module: {
    rules: [],
  },
  plugins: [],
  // 开发服务器
  devServer: {
    host: "localhost", // 启动服务器域名
    port: "3000", // 启动服务器端口号
    open: true, // 是否自动打开浏览器
  },
  mode: "development",
};

这个是个服务,是和webpack五大核心配置属性同一级的,我们需要新增devServer配置对象。

完整代码如下:

  • webpack.config.js
// Node.js的核心模块,专门用来处理文件路径
const path = require("path");

const ESLintWebpackPlugin = require("eslint-webpack-plugin"); // 引入 ESLint 插件
const HtmlWebpackPlugin = require("html-webpack-plugin"); // 引入 html-webpack-plugin 插件

module.exports = {
  // 入口
  // 相对路径和绝对路径都行
  entry: "./src/main.js",
  // 输出
  output: {
    // path: 文件输出目录,必须是绝对路径
    // path.resolve()方法返回一个绝对路径
    // __dirname 当前文件的文件夹绝对路径
    path: path.resolve(__dirname, "dist"),
    // filename: js文件输出文件名
    filename: "js/main.js",
    clean: true, // 自动将上次打包目录资源清空
  },
  // 加载器
  module: {
    rules: [
      {
        // 用来匹配 .css 结尾的文件
        test: /\.css$/,
        // use 数组里面 Loader 执行顺序是从右到左
        use: ["style-loader", "css-loader"],
      },
      {
        // 用来匹配.less结尾的文件
        test: /\.less$/,
        use: ["style-loader", "css-loader", "less-loader"],
      },
      {
        test: /\.s[ac]ss$/,
        use: ["style-loader", "css-loader", "sass-loader"],
      },
      {
        // 用来匹配图片文件
        test: /\.(png|jpe?g|gif|webp)$/,
        type: "asset",
        parser: {
          dataUrlCondition: {
            maxSize: 10 * 1024, // 小于10kb的图片会被base64处理
          },
        },
        generator: {
          // 将图片文件输出到 images 目录中
          // 将图片文件命名 [hash:8][ext][query]
          // [hash:8]: hash值取8位
          // [ext]: 使用之前的文件扩展名
          // [query]: 添加之前的query参数
          filename: "images/[hash:8][ext][query]",
        },
      },
      {
        test: /\.(ttf|woff2?|map4|map3|avi)$/,
        type: "asset/resource", // 以文件资源的形式输出
        generator: {
          filename: "media/[hash:8][ext][query]", // 输出到media目录中
        },
      },
      {
        test: /\.m?js$/, // 转译哪些文件
        exclude: /(node_modules|bower_components)/, // 排除哪些文件夹中的js文件不用转译
        // use: {
        loader: 'babel-loader',
        //   options: {
        //     presets: ['@babel/preset-env'] // 添加预设,转译js文件
        //   }
        // }
      }
    ],
  },
  // 插件
  plugins: [
    new ESLintWebpackPlugin({
      // 指定检查文件的根目录
      context: path.resolve(__dirname, "src"),
    }),
    new HtmlWebpackPlugin({
        // 以 public/index.html 为模板创建文件
        // 新的html文件有两个特点:1. 内容和源文件一致 2. 自动引入打包生成的js等资源
        template: path.resolve(__dirname, "public/index.html"),
    }),
  ],
  // 开发服务器
  devServer: {
    host: "localhost", // 启动服务器域名
    port: "8888", // 启动服务器端口号
    open: true, // 是否自动打开浏览器
  },
  // 模式
  mode: "development", // 开发模式
};

3. 自动打包命令npx webpack serve

npx webpack serve

webpack-dev-server,webpack,webpack,自动化,前端
webpack-dev-server,webpack,webpack,自动化,前端
如上图,执行命令以后,webpack-dev-server会自动在本地启动一个服务,并为我们在浏览器运行打包好的资源。

4. 体验自动打包

这时我们去更改一下需要打包资源文件,并保存看看效果
更改保存前:
webpack-dev-server,webpack,webpack,自动化,前端
webpack-dev-server,webpack,webpack,自动化,前端
更改保存后:
webpack-dev-server,webpack,webpack,自动化,前端
webpack-dev-server,webpack,webpack,自动化,前端
可以看到已经帮我们自动打包并运行到浏览器了

到此我们终于是结束了在开发环境下手动运行打包后的资源文件的时代,进一步解放双手拉。

5. 内存运行

webpack-dev-server,webpack,webpack,自动化,前端
如图,我们清空dist目录下的所有文件,重新npx webpack serve打包

webpack-dev-server,webpack,webpack,自动化,前端
webpack-dev-server,webpack,webpack,自动化,前端
webpack-dev-server,webpack,webpack,自动化,前端
可以看到打包成功,并重新运行到了浏览器,但是dist目录下依然是空的。
这就证明了一点,webpack-dev-server是在本地内存中远行的,这也是咱本地开发环境需要的,至于dist目录要如何才能出来,需要配置生产环境,在后续会更新哦。

至此在本地的开发环境,是不是有那么一点在框架的脚手架中的开发体验啦。文章来源地址https://www.toymoban.com/news/detail-766642.html

到了这里,关于webpack自动化打包webpack-dev-server的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android使用Jenkins自动化打包

    了解Jenkins工具 Jenkins在Windows系统下的环境搭建 Jenkins 的Android 构建环境配置 创建FreeProject Item,配置Android Gradle工程构建环境 Jenkins格言: Build great things at any scale 。 Jenkins是一款开源CICD软件,提供超过1000个插件用于支持各种自动化任务,包括构建、测试和部署软件。 Jenkins 支

    2024年02月10日
    浏览(43)
  • jenkins编译打包及自动化部署

    一:简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 官网文档:https://www.jenkins.io/zh/doc/ 二:下载及安装(Windows为例) 下载Jenkins安装包 需要安装jdk(11和17版本

    2024年03月21日
    浏览(50)
  • Selenium自动化脚本打包exe文件

    近期由于工作需要写了一个selenium自动化脚本,但是每次运行的时候都要打开Pycharm,因此本人直接使用Python第三方打包库PyInstaller将py文件打包成一个可执行的exe文件,在使用时无需安装Python也可以点击运行。 PyInstaller是一个使用较为简单便捷的打包套件,只需要几行命令即可

    2023年04月08日
    浏览(98)
  • Android之Gradle自动化打包实战

    解放双手,双击桌面快捷方式生成apk包,基于Gradle、bat文件让开发人员告别打包烦扰! 前不久有一个Unity3D研发的小仙女在羽毛球场问我关于Android Studio打apk的一些事情,她说他们运营和测试隔三差五的就坐着她旁边要她重复性的打包(估计是那群痴汉打着工作的幌子实际上干

    2024年02月05日
    浏览(41)
  • Unity 基于Jenkins自动化打包流程

    什么是Jenkins?         Jenkins是一款开源 CICD 软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。 Jenkins的下载与安卓 直接搜索jenkins进入官网下在LTS(稳定版本)下载地址:https://www.jen

    2024年02月08日
    浏览(40)
  • 17.Jenkins完成自动化 拉取,编译,打包,部署

    1.1安装gitee插件到jenkins  gitee默认不允许内网触发。----必须要配置内网穿透 NATAPP -       思考: 我们的项目和jenkins是不是都在一台服务器上。因为jenkins它所在的服务器非常耗费资源,因为jenkins本身要集成很多软件。如果这时项目也部署到当作jenkins所在的服务器,势必会导致

    2024年02月04日
    浏览(46)
  • Unity 使用.bat自动化打包Apk

    首先创建一个start.bat脚本内容如下 start cmd /c call build.bat      --新建一个CMD窗口执行另外一个.bat文件 cd G:AndroidStudioProjectTest --进入到AndroidStudioProject文件夹中 ./gradlew clean project     --执行gradle的清除缓存命令 然后创建一个 build.bat文件 内容如下   进入到Unity的安装目录Edi

    2024年02月12日
    浏览(36)
  • 【uniapp】Uniapp cli 自动化打包脚本实现

    通常使用uniapp开发app时,大多数会使用项目的云服务打包,否则的话再借助原生会变得极其复杂,还要去安装对应大内存的环境。如果恰好此时,你有一个需求是,可以随意的更换logo和封面、标题切换成另外一个app,那么很明显你的HBuilderX维护起来是非常复杂的,如果我们想

    2024年02月04日
    浏览(44)
  • Jenkins的环境部署,(打包、发布、部署、自动化测试)

    一、Tomcat环境安装 1.安装JDK(Java环境) JDK下载地址:Java Downloads | Oracle 安装好后在系统环境变量里配置环境变量: ①添加JAVA_HOME 变量名:JAVA_HOME 变量值:C:Program FilesJavajdk1.8.0_181(根据自己的实际路径配置) ②添加CLASSPATH 变量名:CLASSPATH 变量值:.;%JAVA_HOME%libdt.jar;%J

    2024年01月18日
    浏览(41)
  • uniapp:HbuildeX项目实现jenkins自动化打包上传

    前序: 基于HBuilderX创建的项目。 配置uniapp 指令式打包APP、微信小程序、H5。 ubuntu系统上的jenkins部署基础指令,发送给windows服务器上,windows服务器使用HBuilderX软件的cli.exe执行相关cli命令打包,然后jenkins再调用接口下载打包后的文件。 可实现多线程同时打包。 大致流程:

    2024年02月16日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包