webpack 02 - 进阶使用

简介: webpack 02 - 进阶使用

vue文件单文件打包

// 默认下载的vue-loader 版本太高,需要降到14.1.1版本的
// 默认下载的 vue 模块 版本太高,需要降到 2.7.14

一、安装如下 创建 .vue 文件→介绍 | Vue Loader

安装Bable 使用预处理器 | Vue Loader

抽离css MiniCssExtractPlugin | webpack 中文文档

压缩css CssMinimizerWebpackPlugin | webpack 中文文档

二、webpack.config.js  👉 webapck基础配置-官网

三、配置 devServe 开发环境 | webpack 中文文档


配置 devServe 示例代码

打包图片、抽离 出css、img 文件

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
// 抽离css
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
// 压缩css文件
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
module.exports = {
    // 文件解析
    resolve: {
         // 【配置省略后缀名】配置解析-文件名
        //  使用场景:配置后,在js中引入文件,可以不写后缀名
        // 官网地址 :https://www.webpackjs.com/configuration/resolve/#resolveextensions
        extensions: ['.js', '.json', ".css",'.wasm'],
        // 【配置别名】配置引入文件的别名,
        // 使用场景:在引入文件路径时,可以不写相对路径,直接用@+文件名称,比如 import @/main.css
        // 【官网地址】https://www.webpackjs.com/configuration/resolve/#resolvealias
            alias: {
              "@": path.resolve(__dirname, 'src'),
            },
      },
    entry: './src/main.js', // 打包入口文件
    output: { // 打包出口配置
        filename: 'main.js',
        path: path.resolve(__dirname, 'dist'),
    },
    // 配置插件
    plugins: [
        new HtmlWebpackPlugin({
            //   title: '管理输出',
            template: "./index.html"
        }),
        new MiniCssExtractPlugin()
    ],
    optimization: {
        minimizer: [
            // 在 webpack@5 中,你可以使用 `...` 语法来扩展现有的 minimizer(即 `terser-webpack-plugin`),将下一行取消注释
            // `...`,
            new CssMinimizerPlugin(),
        ],
        minimize: true,
    },
    //  配置前端服务 
    devServer: {
        // 需要配置服务端口,地址,是否热更新
        static: './dist',
        // host :"127.0.0.1" 
        host: '127.0.0.1',// 配置地址
        port: '9090',
        hot: true,
        // 配置 proxy 代理
        proxy: {
            // 当前端发送http请求,接口地址包含/bawei 指向的地址是 https://fc-mp-c3490805-9d7b-4acf-985b-19f987e0fd97.next.bspapp.com
            // 以下代理,请求接口会在api自动加上 /bawei 前缀
            // "/bawei":"https://fc-mp-c3490805-9d7b-4acf-985b-19f987e0fd97.next.bspapp.com"
            // 不希望传递代理前缀,通过配置替换
            // "/get_goods_list_bawei":{
            //     target:"https://fc-mp-c3490805-9d7b-4acf-985b-19f987e0fd97.next.bspapp.com/",
            //     pathRewrite: { '^/bawei': '' },
            // },
            // 开启代理前提,接口已开启跨越配置
            "/api": "127.0.0.1"
        },
        // 在wbepack 中起一个中间件服务
        // 官网地址 https://www.webpackjs.com/configuration/dev-server/#devserversetupmiddlewares
        setupMiddlewares: (middlewares, devServer) => {
            if (!devServer) {
                throw new Error('webpack-dev-server is not defined');
            }
            // 定义一个接口为 get_bawei 的 GET接口
            devServer.app.get('/get_bawei', (_, response) => {
                response.send({
                    title: " hi - 八维"
                });
            });
            return middlewares;
        },
    },
    //   配置 打包相关的loader
    mode: 'development',
    // 配置解析器 
    module: {
        rules: [
            {
                test: /\.vue$/,
                loader: 'vue-loader'
            },
            // 它会应用到普通的 `.js` 文件
            // 以及 `.vue` 文件中的 `<script>` 块
            {
                test: /\.js$/,
                loader: 'babel-loader'
            },
            // 它会应用到普通的 `.css` 文件
            // 以及 `.vue` 文件中的 `<style>` 块
            {
                test: /\.css$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    // 'vue-style-loader',
                    'css-loader'
                ]
            },
            // 配置打包图片
            {
                test: /\.(png|svg|jpg|jpeg|gif)$/i,
                type: 'asset/resource',
              },
        ]
    },
};


详细步骤


webpack 打包 vue 单文件


安装 vue 的 nodeModule 依赖包


注意 vue 版本需要安装 2.7.14


安装 vue-loader (将vue文件解析成浏览器运行的)


注意 vue-loader 版本 需要安装 14.1.1


vue-loader 官网安装


官网链接 https://vue-loader.vuejs.org/zh/guide/#vue-cli
官网命令行:
npm install -D vue-loader@14.1.1 vue-template-compiler


需要额外执行 npm i vue@2.7.14


参考官网在 webpack 中的 rules 配置


安装 style loader


官网 https://vue-loader.vuejs.org/zh/guide/pre-processors.html#stylus


命令行 npm install -D stylus stylus-loader


安装 Bable


转译js为浏览器可运行版本


官网 https://vue-loader.vuejs.org/zh/guide/pre-processors.html#postcss


官网命令行
npm install -D babel-core babel-loader


配置别名


官网链接 https://webpack.docschina.org/configuration/resolve/#resolvealias


示例代码:

  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src'),
    },
  },


相关文章
|
前端开发 搜索推荐 API
webpack和vite devServer的进阶用法:配置proxy修改请求和响应
在前端日常开发中我们一般都是配置本地开发服务器的proxy来解决跨域问题,查看官网文档或者通过搜索引擎搜出来的都是比较基础的用法。
1907 0
|
4月前
|
缓存 前端开发 算法
Webpack 进阶:深入理解其工作原理与优化策略
Webpack 进阶:深入理解其工作原理与优化策略
141 2
|
存储 JavaScript 编译器
TypeScript(一) —— 进阶(TypeScript 中的类型、编译选项及使用 webpack 打包 ts 代码)
TypeScript(一) —— 进阶(TypeScript 中的类型、编译选项及使用 webpack 打包 ts 代码)
252 0
|
存储 JavaScript 前端开发
全栈开发实战|Vue进阶——使用静态模块打包工具webpack
全栈开发实战|Vue进阶——使用静态模块打包工具webpack
356 0
全栈开发实战|Vue进阶——使用静态模块打包工具webpack
|
缓存 JSON 前端开发
万字总结webpack入门进阶知识
上一篇文章中我们讲到了 webpack 的一些基础特性,但是呢,单单会基础特性还是远远不够的。因此,在今天的文章中,将给大家带来 webpack 的高级特性,包括但不限于 dev 环境和 prod 环境的区分打包,以及使用 webpack 对项目进行代码分割等等技巧。
万字总结webpack入门进阶知识
|
Web App开发 JSON 缓存
前端利器躬行记(4)——webpack进阶
  webpack是一个非常强大的工具,除了前文所介绍的基础概念之外,还有各种进阶应用,例如Source Map、模块热替换、集成等,本文会对这些内容做依次讲解。
前端利器躬行记(4)——webpack进阶
|
4月前
|
JavaScript 前端开发
webpack成长指北第9章---webpack如何对icon字体进行打包
webpack成长指北第9章---webpack如何对icon字体进行打包
103 1
|
4月前
|
前端开发 JavaScript
webpack成长指北第8章---webpack的CSS Modules打包
webpack成长指北第8章---webpack的CSS Modules打包
52 0
|
14天前
|
JavaScript
webpack打包TS
webpack打包TS
|
10天前
webpack 打包多页面应用
webpack 打包多页面应用