WebPack相关介绍

40 阅读2分钟

webpack 介绍: webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。

            wepack可以打包压缩所有文件格式
            webpack可以在入口对文件直接进行打包压缩 为静态资源文件

            核心:
                entry 入口
                output 出口
                loader 
                    loader 用于对模块的源代码进行转换
                plugin 插件

            如果想要使用webpack打包压缩特定资源文件 我们需要配置一个文件 名字webpack.config.js文件
            所有核心都是在这个文件中完成的

            使用流程:
                1 安装
                    npm install webpack webpack-cli --save-dev
                2 创建webpack.config.js文件 在文件中粘贴代码
                const path = require('path');

                module.exports = {
                    entry: '相对路径.js',  // 打包文件的入口 
                    output: {                 // 输出打包后文件的路径
                        filename: '打包后的文件名.js',
                        path: path.resolve(__dirname, '打包后的文件路径'),
                    },
                };
                3 配置package.json文件
                    "build": "webpack"
                4 执行打包 需要运行npm run build 


        打包js文件
            1 打包js单文件
                entry: '相对路径.js',
            2 打包js多文件
                entry: {
                    自定义属性名1: '路径1',
                    自定义属性名2: '路径2'
                    ....
                }

                filename: '[name].js',   // name指的是自定义属性名


        打包css/sass/less文件
            1 需要安装loader
            css:
                css-loader style-loader

            sass:
                sass-loader css-loader  style-loader

            less:
                less less-loader css-loader style-loader

            2module里边配置匹配规则:
                rules: [
                    {
                        test: /\.css$/i,
                        use: ["style-loader","css-loader"]   // use数组中的配置项 需要按照从右到左的顺序执行
                    },
                    {
                        test: /\.less$/i,
                        use: ["style-loader","css-loader","less-loader"]   // use数组中的配置项 需要按照从右到左的顺序执行
                    },
                    {
                        test: /\.scss|.sass$/i,
                        use: ["style-loader","css-loader","sass-loader"]   // use数组中的配置项 需要按照从右到左的顺序执行
                    }
                ]

            
            3 打包图片文件(png/jpg/jpeg/webp/gif)
                1 webpack 5.x
                我们可以直接对图片资源文件进行打包处理 而不需要安装相关loader
                因为webpack 5.x已经在内部自动集成了相关的loader 例如url-loader file-loader

                2 webpack 4.x
                    1 安装file-loader
                    npm i file-loader --save-dev

                    2 需要配置
                    rules: [
                        {
                            test: /\.(png|jpe?g|gif)$/i,
                            use: [
                            {
                                loader: 'file-loader',
                            },
                            ],
                        },
                    ]


            4 打包html页面
                1 安装
                npm i --save-dev html-webpack-plugin
                2 配置
                const HtmlWebpackPlugin = require('html-webpack-plugin')

                plugins: [
                    new HtmlWebpackPlugin({
                        title: '标题',
                        filename: '生成后的文件名',
                        template: '被打包文件模板',
                        inject: "插入的位置",  // true false head body
                        // chunks: ['a','b'],   // 允许引入的模块
                        excludeChunks: ['b']    // 不允许引入的模块
                    })
                    ...
                ]


            5 对js中打包的css文件 进行单独的打包引入
                1 安装
                npm install --save-dev mini-css-extract-plugin
                2 配置
                const MiniCssExtractPlugin = require("mini-css-extract-plugin");
                将正则匹配中style-loader全部替换为MiniCssExtractPlugin.loader
                {
                    test: /\.css$/i,
                    use: [MiniCssExtractPlugin.loader, "css-loader"],
                }
                3 在plugin中编写new MiniCssExtractPlugin
                new MiniCssExtractPlugin{
                    filename: "要生成的文件名字" // '[name].css'   name值得是entry入口中js自定义的属性名
                }

            6 打包视频音频
                1 安装
                npm install copy-webpack-plugin --save-dev
                2 配置
                new CopyPlugin({
                    patterns: [
                        { from: "你要复制的文件夹路径", to: "要生成的文件夹路径" }
                    ]
                }),