webpack\webpack-cli\webpack-dev-server的配置使用

关于配置package.json的配置

{
  "name": "03-webpack-test",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "scripts": {
    "build": "cross-env NODE_ENV=production webpack",
    "serve": "cross-env NODE_ENV=development webpack serve"
  },
  "devDependencies": {
    "cross-env": "7.0.3",
    "css-loader": "5.0.1",
    "file-loader": "6.2.0",
    "html-loader": "1.3.2",
    "html-webpack-plugin": "4.5.0",
    "less": "3.12.2",
    "less-loader": "7.1.0",
    "mini-css-extract-plugin": "2.4.2",
    "optimize-css-assets-webpack-plugin": "6.0.1",
    "style-loader": "2.0.0",
    "url-loader": "4.1.1",
    "webpack": "5.12.0",
    "webpack-cli": "4.10.0",
    "webpack-dev-server": "4.9.1"
  }
}

关于webpack.config.js的配置

const path = require('path');
// 引入html打包插件
const HtmlWebpackPlugin = require("html-webpack-plugin");
// 引入提取css文件的插件
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
//引入 优先css的插件
const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin');

module.exports = {

    // 入口
    entry: {
        ad: "./src/pages/ad/ad.js",
        index: "./src/pages/index/index.js",
    },
    // 出口
    output: {
        // 公共的文件输出路径
        publicPath: "./",
        filename: "js/[name].js",
    },
    // 加载器
    module: {
        // 加载器的规则
        rules: [
            // css加载器
            {
                test: /\.css$/, use: [{
                    loader: MiniCssExtractPlugin.loader,
                    options: {
                        publicPath: "../"
                    }
                }, "css-loader"]
            },
            // less加载器
            {
                test: /\.less$/, use: [{
                    loader: MiniCssExtractPlugin.loader,
                    options: {
                        publicPath: "../"
                    }
                }, "css-loader", "less-loader"]
            },
            // css中引用图片的加载器
            {
                test: /\.(jpg|jpeg|webp|gif|svg|png)$/,
                use: [{
                    loader: "url-loader",
                    options: {
                        limit: 10 * 1024,
                        name: "[hash:16].[ext]",
                        outputPath: "imgs",
                        esModule: false, //禁用es6的模块化
                    }
                }]
            },
            // html页面中的图片加载器
            { test: /\.html$/, use: ["html-loader"] },
            // 加载iconfont字体图标
            {
                test: /\.(ttf|woff|woff2|eot|svg)$/i, use: [{
                    loader: 'file-loader',
                    options: {
                        name: '[hash:16].[ext]', //设置字体图标文件的文件名
                        outputPath: 'fonts', //设置字体图标文件的打包文件夹
                    }
                }]
            }

        ]
    },

    // 插件
    plugins: [
        // html打包插件
        new HtmlWebpackPlugin({
            template: './src/pages/ad/ad.html',
            filename: "ad.html",
            chunks: ["ad"]
        }),
        // html打包插件
        new HtmlWebpackPlugin({
            template: './src/pages/index/index.html',
            filename: "index.html",
            chunks: ["index"]
        }),
        //提取css文件的插件
        new MiniCssExtractPlugin({
            filename: 'css/[name].css',
        }),
        // 优化css的插件
        new OptimizeCssAssetsWebpackPlugin(),
    ],
    // 模式
    mode: process.env.NODE_ENV,

    devServer: {
        static: {  // 静态资源默认路径
            directory: path.join(__dirname, 'dist'),
        },
        compress: true, // 启用gzip压缩
        port: 8080,  // 端口
        open: true, // 自动打开服务
        hot: true, // 热加载
        devMiddleware: {  // 用于检测文件更改自动打包,并刷新页面
            index: true,
            mimeTypes: { phtml: 'text/html' },
            publicPath: '/publicPathForDevServe',
            serverSideRender: true,
            writeToDisk: true,
        },
    },
    target: 'web', // 目标是浏览器
}

特别说明

在更新到 webpack 5.12.0 ,webpack-cli: 4.10.0 , webpack-dev-server: 4.9.1 关于devServer的配置有新的变化,以前的一些配置用不了, 详细配置可以参考https://webpack.js.org/configuration/dev-server/#devserverlivereload

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
webpack-dev-server 是一个用于开发环境的轻量级服务器,它与 webpack 模块打包工具结合使用,提供了实时重新加载(live reloading)和热模块替换(hot module replacement)等功能,使得在开发过程中可以快速地预览和调试应用程序。 通过 webpack-dev-server,你可以在本地启动一个服务器,并且监听指定的端口。当你修改了源代码文件时,webpack-dev-server 会自动重新编译并刷新浏览器,使你能够即时看到修改后的效果。同时,它还支持热模块替换,即在不刷新整个页面的情况下,只替换发生改变的模块,从而提高开发效率。 要使用 webpack-dev-server,你需要先安装 webpackwebpack-dev-server: ``` npm install webpack webpack-dev-server --save-dev ``` 然后,在 webpack 配置文件中配置 devServer 选项: ```javascript module.exports = { // ...其他配置项 devServer: { contentBase: path.join(__dirname, 'dist'), // 设置服务器从哪个目录提供内容 compress: true, // 启用 gzip 压缩 port: 9000, // 指定服务器监听的端口号 }, }; ``` 最后,在 package.json 文件中添加一个脚本命令以启动 webpack-dev-server: ```json { "scripts": { "start": "webpack-dev-server --open" } } ``` 通过运行 `npm start` 命令,就可以启动 webpack-dev-server,并在浏览器中打开应用程序。每次修改源代码后,都会自动重新编译并刷新页面。这样,你就可以方便地进行开发调试了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QB哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值