webpack5教程

导读:本篇文章讲解 webpack5教程,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

简介

创建webpack项目

webpack核心配置文件config的使用

webpack打包多入口、多出口

如何配置webpack-dev-server

1:了解webpack-dev-server

2:安装webpack-dev-server

3:配置webpack.config.js文件

 4:配置package.json

5:运行

loder

1:简介

2:安装css相关的loder

3:配置loader

less-loader

1:安装

2:创建一个less文件

3:配置loader

sass-loader

1:安装

2:创建一个scss文件

3:配置loader

PostCSS处理浏览器前缀(处理浏览器兼容问题)

1:安装loader

2:配置loader 在webpack.config.js添加

3:打包

4:引入js,查看效果

图片处理

1:安装loader

2:配置loader

3:给css中引入一张图片

4:打包

5:查看效果

字体处理

1:安装loader

2:配置loader

第三方js库处理

方式一:本地导入 使用webpack.ProvidePlugin

方式二:使用npm安装的方式

babel编辑es6语法

1:简介

2:安装依赖

3:配置webpack.config.js

4:配置转换规则

自动生成HTML文件插件

1:简介

2:安装依赖

3:配置webpack.config.js

4:新建index.html模板文件

5:打包、查看效果

提取分离css文件打包到单独文件

1:安装依赖

2:配置webpack.config.js

3:打包、查看效果

压缩及优化css结构

1:安装插件

2:配置webpack.config.js

拷贝静态文件

1:简介

2:安装插件

3:配置webpack.config.js

4:打包、查看效果

打包之前清除旧的打包文件

1:安装插件

2:配置webpack.config.js

3:打包、查看效果

HTML文件中引用图片

html-loader | webpack

区分生产环境和开发环境

1:安装

2:创建3个文件,放不同环境的配置

3:配置package.json

​编辑

 4:打包


webpack官网:https://webpack.js.org/

webpack中文网:https://www.webpackjs.com

简介

本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 bundles,它们均为静态资源,用于展示你的内容。

创建webpack项目

1、电脑上安装好node

2、创建package.json文件

命令:npm init

// 输入项目名称版本描述作者等信息,跳过直接按回车,最后就会生成package.json文件

3、安装webpack

  • 本地安装(推荐)

        npm install –save-dev webpack

        npm install –save-dev webpack-cli

  • 全局安装

        npm install –global webpack webpack-cli

    安装完成后会在项目路径下生成package-lock.json文件

4、打包

        默认入口  src/index.js        //手动新建此文件

        默认出口  dist/main.js

  • 打包模式

        编辑package.json配置文件的 scripts 块

“scripts”: {
    “dev”: “webpack –mode development”,        // 开发环境
    “pro”: “webpack –mode production”             // 生产环境
},

 然后在终端窗口使用命令即可打包:npm run dev    // npm run pro

webpack核心配置文件config的使用

示例:修改默认打包时的入口和出口文件路径

1、在项目根路径下创建webpack.config.js文件

2、编辑webpack.config.js文件 信息如下:

const path = require(“path”);

module.exports = {
    entry: “./public/index.js”,                // 这里是入口文件了
    output: {
        path: path.resolve(__dirname, “build”),        // 这里是出口文件夹
        filename: “bundle.js”                                     // 这个是出口文件
    }
}

// 代码说明

path:指文件打包后存放的路径

entry:入口打包文件

path.resolve(“”, “”):将当前路径处理成绝对路径,第二个参数可以在第一个参数的绝对路径上使用../的方式指定到上级路径

__dirname:表示当前所在目录的绝对路径

filename:是打包后文件的名称

webpack打包多入口、多出口

1:单入口 多文件的形式

const path = require(“path”);

module.exports = {

    entry:[        // 这里改成数组

        “./src/index1.js”,

        “./src/index2.js”

    ],

    output: {

        path: path.resolve(__dirname, “build”),

        filename: “bundle.js”

    }

}

2:多入口 多出口的形式

const path = require(“path”);

module.exports = {

    entry:{        // 这里改成对象

        pageOne:”./public/pageOne/index.js”,

        pageTwo:”./public/pageTwo/index.js”

    },

    output: {

        path: path.resolve(__dirname, “build”),

        filename: “[name].js”        // 这里的name对应着entry的属性名就是(pageOne、pageTwo)

    }

}

webpack5教程

如何配置webpack-dev-server

1:了解webpack-dev-server

webpack-dev-server 是用来配置本地服务器的,使用它可以为webpack打包生成的资源文件提供web服务。

webpack-dev-server主要提供两个功能:

        (1):为静态文件提供web服务

        (2):自动刷新和热替换(HMR)

2:安装webpack-dev-server

npm install –save-dev webpack-dev-server

3:配置webpack.config.js文件

devServer: {
    static: “./build”,             // 设置服务器访问的基本目录
    host: “localhost”,          // 服务器的ip地址
    port: 8080,                 // 端口号
    open: true                  // 是否自动打开页面,true:自动打开,false:不打开

    compress: true,         // 是否启用 gzip 压缩

    hot: true                        // 模块热替换
}

webpack5教程

 4:配置package.json

“scripts”: {
    “start”: “webpack-dev-server –mode development”
}

webpack5教程

5:运行

        (1):先打包

                npm run dev

        (2):启动服务器

                npm run start

默认会访问 index.html页面,没有的话就显示如下

webpack5教程


loder

1:简介

loader 用于对模块的源代码进行转换。loader 可以使你在 import 或”加载”模块时预处理文件。因此,loader 类似于其他构建工具中“任务(task)”,并提供了处理前端构建步骤的强大方法。loader 可以将文件从不同的语言(如 TypeScript)转换为 JavaScript,或将内联图像转换为 data URL。loader 甚至允许你直接在 JavaScript 模块中 import css文件

可以理解为使用webpack的话,以前写html时直接引用静态文件的方式将不起作用,处理非JavaScript静态文件,需要使用webpack提供的特定加载器才可以正常使用

2:安装css相关的loder

npm install –save-dev style-loader css-loader

3:配置loader

        (1):在webpack.config.js文件里配置module中的rules

                在webpack的配置中loader有两个目标:

                        1. test属性,用于标识出应该被对应的loader进行转换的单个或者多个文件。

                        2. use属性,表示进行转换时,应该使用哪个loader。

module: {
    rules: [
        {
            test: /\.css$/,        // 正则表达式,表示以css文件结尾
            use: [“style-loader”, “css-loader”]
        }
    ]
}

webpack5教程

        (2):创建一个css文件,被js文件引用

webpack5教程

webpack5教程        

        (3):打包:npm run dev

        (4):在出口目录创建一个.html文件,然后引入打包后的js

webpack5教程

        (5):打开html页面,查看效果

webpack5教程

less-loader

1:安装

npm install –save-dev less-loader less 

2:创建一个less文件

webpack5教程

3:配置loader

module: {
        rules: [
            {
                test: /\.less$/,
                use: [
                    “style-loader”, “css-loader”, “less-loader”
                ]
            }
        ]
}

(和css-loader一样,这里节省篇幅就不重复贴了) less文件被js引用,然后打包,然后html文件中引入less中的样式

sass-loader

1:安装

npm install –save-dev sass-loader node-sass

2:创建一个scss文件

webpack5教程

3:配置loader

module: {
    rules: [
        {
            test: /\.scss$/,
            use: [“style-loader”, “css-loader”, “sass-loader”]
        }
    ]
}

4:引入

webpack5教程

5:打包   npm run dev

6:html引入scss样式,打开页面看效果

webpack5教程

webpack5教程


PostCSS处理浏览器前缀(处理浏览器兼容问题)

1:安装loader

npm install –save-dev postcss-loader autoprefixer

2:配置loader 在webpack.config.js添加

{
    test:/\.css$/,
    use:[
        “style-loader”,
        “css-loader”,
        “postcss-loader”
    ]
}

然后在项目根路径创建文件postcss.config.js (和webpack.config.js同级)

module.exports = {

    plugins: [

        // 兼容浏览器,添加前缀

        require(‘autoprefixer’)({

            overrideBrowserslist: [

                “ie >= 8”,

                “Firefox >= 20”,

                “Safari >= 5”,

                “Android >= 4”,

                “Ios >= 6”

                //’last 10 versions’, // 所有主流浏览器最近10版本用

            ],

            grid: true

        })

    ]

}

webpack5教程

3:打包

npm run dev

4:引入js,查看效果

webpack5教程


图片处理

1:安装loader

npm install –save-dev file-loader

2:配置loader

{
    test: /\.(png|jpg|gif|jpeg)$/,
    use: [
        {
            loader: ‘file-loader’,
            options: {
                esModule: false
            }
        }
    ],
    type: ‘javascript/auto’
}

webpack5教程

关于file-loader的options选项的说明:

        name:为你的文件配置自定义文件名模板(默认值[hash].[ext])
        context:配置自定义文件的上下文,默认为 webpack.config.js
        publicPath:为你的文件配置自定义 public 发布目录(为文件指定访问的域名目录)
        outputPath:为你的文件配置自定义 output 输出目录(指定打包好后的文件存放目录)

        [ext]:资源扩展名
        [name]:资源的基本名称
        [path]:资源相对于 context的路径
        [hash]:内容的哈希值

3:给css中引入一张图片

webpack5教程

4:打包

npm run dev

webpack5教程

5:查看效果

webpack5教程


字体处理

1:安装loader

npm install –save-dev file-loader

2:配置loader

{
    test:/\.(ttf|woff|woff2|eot|svg)$/,
    use:[{
        loader:’file-loader’,
        options:{
            outputPath:’font/’        // 为打包好的文件指定目录,不然打包好后都在根目录下显得很乱
        }
    }]
}

其他的与上面一样


第三方js库处理

* 示例:导入jquery库举例

方式一:本地导入 使用webpack.ProvidePlugin

webpack.ProvidePlugin:参数是键值对形式,键就是我们项目中使用的变量名,值就是键所指向的库。webpack.ProvidePlugin会先从npm安装的包中查找是否有符合的库。如果webpack配置了resolve.alias选项(理解成“别名”),那么webpack.ProvidePlugin就会顺着设置的路径一直找下去

(1):下载jquery库文件,导入到项目中

webpack5教程

(2):配置webpack.config.js

const webpack = require(“webpack”);

module.exports = {
    resolve: {
        alias: {
            jQuery: path.resolve(__dirname, “public/js/jquery-3.6.1.min.js”)    // 这里写第三方库所在的路径
        }
    },
    plugins: [
        new webpack.ProvidePlugin({
            jQuery: “jQuery”
        })
    ]
}

webpack5教程

 (3):在js文件中使用jquery库

webpack5教程

(4):打包、查看效果

webpack5教程

方式二:使用npm安装的方式

(1):安装jquery库

npm install –save-dev jquery

(2):在js文件中引入jquery

import $ from “jquery”; // $:表示jquery变量名

(3):在js文件中使用jquery

webpack5教程

 (4):打包、查看效果

webpack5教程


babel编辑es6语法

1:简介

目前,ES6(ES2015)这样的语法已经得到很大规模的应用,它具有更加简洁、功能更加强大的特点,实际项目中很可能会使用采用了ES6语法的模块,但浏览器对于ES6语法的支持并不完善。为了实现兼容,就需要使用转换工具对ES6语法转换为ES5语法,babel就是最常用的一个工具。

babel转化语法所需依赖项:

        babel-loader: 负责 es6 语法转化

        babel-core: babel核心包

        babel-preset-env:告诉babel使用哪种转码规则进行文件处理

2:安装依赖

npm install –save-dev babel-loader @babel/core @babel/preset-env

3:配置webpack.config.js

const path = require(“path”);

module.exports = {
    module:{
        rules:[
            {
                test: /\.js$/,
                exclude: /node_modules/,        // exclude:表示排除查找目录
                use: “babel-loader”
            }
        ]
    }
}

4:配置转换规则

方式一:在根目录下新建.babelrc文件

webpack5教程

 方式二:配置webpack.config.js

const path = require(“path”);

module.exports = {
    module:{
        rules:[
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: {
                    loader: “babel-loader”,
                    options: {
                        presets: [“@babel/preset-env”]
                    }
                }
            }
        ]
    }
}

webpack5教程

5:在js文件中使用es6语法,然后查看打包后的js文件是否是es5语法

转换前

webpack5教程

转换后 

webpack5教程


自动生成HTML文件插件

1:简介

HtmlWebpackPlugin会自动为你生成一个HTML文件,根据指定的index.html模板打包后生成对应的 html 文件,相关引用关系和文件路径都会按照正确的配置被添加进生成的html里

2:安装依赖

npm install –save-dev html-webpack-plugin

3:配置webpack.config.js

const HtmlWebpackPlugin = require(“html-webpack-plugin”);

module.exports = {
    plugins: [
        new HtmlWebpackPlugin({
            template: “./public/index.html”,        // 指定模板文件
            filename: “main.html”                      // 指定打包后的html文件名称
        })
    ]
}

更多参数说明:

webpack5教程

4:新建index.html模板文件

webpack5教程

5:打包、查看效果

webpack5教程


提取分离css文件打包到单独文件

1:安装依赖

npm install –save-dev mini-css-extract-plugin

2:配置webpack.config.js

const MiniCssExtractPlugin = require(“mini-css-extract-plugin”);

module.exports = {
    module:{
        rules:[
            {
                test:/\.css$/,
                use:[MiniCssExtractPlugin.loader, “css-loader”]
            }
        ]
    },
    plugins: [
        new MiniCssExtractPlugin({
            filename:”./css/index.css”        // 打包后的css文件路径和名称
        })
    ]
}

3:打包、查看效果

npm run dev

 webpack5教程


压缩及优化css结构

1:安装插件

npm install –save-dev css-minimizer-webpack-plugin

2:配置webpack.config.js

const CssMinimizerPlugin = require(“css-minimizer-webpack-plugin”);

module.exports = {
    optimization: {
        minimizer: [
            new CssMinimizerPlugin({
                test: /\.css(\?.*)?$/i,    // 匹配要优化处理的文件,这个是默认值
                parallel: true,         // 是否使用多进程并发执行优化,// parallel: 4, 表示启用多进程并发执行且设置并发数
                minimizerOptions: {
                    preset: [
                        “default”, { discardComments: { removeAll: true }}        // 是否去除注释
                    ]
                }
            })
        ],
        minimize: false        // 是否在开发环境下启用 CSS 优化
    }
}

3:打包、查看效果

npm run dev

webpack5教程


拷贝静态文件

1:简介

打包前的静态文件原封不动的拷贝到打包后的相同目录下

2:安装插件

npm install –save-dev copy-webpack-plugin

3:配置webpack.config.js

const CopyWebpackPlugin = require(“copy-webpack-plugin”);

module.exports = {
    plugins: [
        new CopyWebpackPlugin({
            patterns: [
                {
                    from: __dirname + “/public/js”,        // 打包前的文件存放目录
                    to: __dirname + “/build/js”            // 打包后的文件存放目录
                },
                {
                    from: path.resolve(__dirname, “../public/img”),        // 两种路径方式

                    to: path.resolve(__dirname, “../build/img”)
                }
            ]
        })
    ]
}

4:打包、查看效果

npm run dev

webpack5教程


打包之前清除旧的打包文件

1:安装插件

npm install –save-dev clean-webpack-plugin

2:配置webpack.config.js

const { CleanWebpackPlugin } = require(‘clean-webpack-plugin’);        // 变量名称上的 花括号一定要带上
module.exports = {
    plugins: [
        new CleanWebpackPlugin()
    ]
}

3:打包、查看效果

没使用此插件前,打包后,以下js文件其实都是同一个文件

webpack5教程

 使用插件后,打包之前把之前打包的旧文件删除了

webpack5教程


HTML文件中引用图片

html-loader | webpack


区分生产环境和开发环境

1:安装

npm install –save-dev webpack-merge

2:创建3个文件,放不同环境的配置

webpack.common.config.js                // 放公共的配置

webpack.dev.config.js                        // 放开发环境的配置

webpack.pro.config.js                        // 放生产环境的配置

webpack5教程

编辑 webpack.common.config.js  (示例,请根据实际情况配置)

const path = require(“path”);
const webpack = require(“webpack”);

module.exports = {
    // 如果有公共的配置,就写上
    entry: ‘./src/index.js’,
    output: {
        path: path.resolve(__dirname, ‘build’),        //注意路径问题
        filename: “bundle.js”
    },
    devServer: {
        static: ‘./build’,  //设置服务器访问的基本目录
        host: ‘localhost’, //服务器的ip地址
        port: 8080,  //端口
        open: true,  //自动打开页面,
    },
    module: {
        // 公共module…
        rules: [
            {
                test:/\.css$/,
                use: [“style-loader”, “css-loader”]
            }
        ]
    },
    optimization: {
        // 公共…
    },
    plugins: [
        // 公共插件…
    ]
}

编辑 webpack.dev.config.js

const path = require(“path”);
const webpack = require(“webpack”);
const { merge } = require(‘webpack-merge’);                            // 引入区分环境的工具
const common = require(‘./webpack.common.config.js’);        // 引入公共配置文件

module.exports = merge(common,{                                      // 使用 merge方法
    // 如果有开发环境的配置,就写上
    module: {
        // 开发环境module…
    },
    optimization: {
        // 开发环境…
    },
    plugins: [
        // 开发环境…
    ]
})

编辑 webpack.pro.config.js

const path = require(“path”);
const webpack = require(“webpack”);
const { merge } = require(‘webpack-merge’);                            // 引入区分环境的工具
const common = require(‘./webpack.common.config.js’);        // 引入公共配置文件

module.exports = merge(common,{                                      // 使用 merge方法
    // 如果有生产环境的配置,就写上
    module: {
        // 生产环境module…
    },
    optimization: {
        // 生产环境…
    },
    plugins: [
        // 生产环境插件…
    ]
})

3:配置package.json

// 使用 –config 指定配置文件 

“scripts”: {

        “dev”: “webpack –mode development –config ./config/webpack.dev.config.js”,

        “pro”: “webpack –mode production –config ./config/webpack.pro.config.js”,

        “start”: “webpack-dev-server –mode development –config ./config/webpack.dev.config.js”

    }

webpack5教程

 4:打包

npm run dev  // npm run pro

        

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/72523.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!