webpack(涉及基本配置)

webpack

webpack 是一种前端资源构建工具,一个静态模块打包器(module bundler)。
在 webpack 看来, 前端的所有资源文件(js/json/css/img/less/…)都会作为模块处理。
它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)。

五大核心

1.Entry:入口(Entry)指示 webpack 以哪个文件为入口起点开始打包
2.Output:输出(Output)指示 webpack 打包后的资源 bundles 输出到哪里去
3.Loader:Loader 让 webpack 能 够 去 处 理 那 些 非 JavaScript 文 件 (webpack 自 身 只 理 解 JavaScript)
4.Plugins:插件(Plugins)可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩, 一直到重新定义环境中的变量等
5.Mode:模式(Mode)指示 webpack 使用相应模式的配置。
两个模式: 1.development 能让代码本地调试 运行的环境(通过npm --dev)
2.production 能让代码优化上线 运行的环境

初始化

1.终端窗口 npm init
初始化package.json :
package name: 你的项目名字叫啥
version: 版本号
description: 对项目的描述
entry point: 项目的入口文件(一般你要用那个js文件作为node服务,就填写那个文件)
test command: 项目启动的时候要用什么命令来执行脚本文件(默认为node app.js)
git repository: 如果你要将项目上传到git中的话,那么就需要填写git的仓库地址(这里就不写地址了)
keywirds: 项目关键字(我也不知道有啥用,所以我就不写了)
author: 作者的名字(也就是你叫啥名字)
license: 发行项目需要的证书(这里也就自己玩玩,就不写了)
2.安装 npm install webpack webpack-cli -g

webpack 开发环境的基本配置

  1. 创建文件 webpack.config.js
const { resolve } = require('path'); // node 内置核心模块,用来处理路径问题

module.exports = { entry: './src/js/index.js', // 入口文件 
    output: { // 输出配置 
        filename: './built.js', // 输出文件名 
        path: resolve(__dirname, 'build/js') // 输出文件路径配置 
    },
    mode: 'development' //开发环境 
};

2.打包样式

module: { 
        rules: [ 
        // 详细 loader 配置 
        // 不同文件必须配置不同 loader 处理 
        { 
            // 匹配哪些文件 
            test: /\.css$/, 
            // 使用哪些 loader 进行处理 
            use: [ 
                // use 数组中 loader 执行顺序:从右到左,从下到上 依次执行 
                // 创建 style 标签,将 js 中的样式资源插入进行,添加到 head 中生效 
                'style-loader', 
                // 将 css 文件变成 commonjs 模块加载 js 中,里面内容是样式字符串 
                'css-loader' ] },
                { 
                    test: /\.less$/, 
                    use: [ 
                        'style-loader', 
                        'css-loader', 
                        // 将 less 文件编译成 css 文件 // 需要下载 less-loader 和 less 
                        'less-loader' ] 
                    } 
                ] 
            },
            // plugins 的配置 
            plugins: [ 
                // 详细 plugins 的配置 
            ],

3.打包html

// plugins 的配置 
            plugins: [ 
                // plugins 的配置 
                // html-webpack-plugin 
                // 功能:默认会创建一个空的 HTML,自动引入打包输出的所有资源(JS/CSS) 
                // 需求:需要有结构的 HTML 文件 
                new HtmlWebpackPlugin({ 
                    // 复制 './src/index.html' 文件,并自动引入打包输出的所有资源(JS/CSS) 
                    template: './src/index.html' 
                })
            ],
{ test: /\.html$/, 
                // 处理 html 文件的 img 图片(负责引入 img,从而能被 url-loader 进行处理) 
                loader: 'html-loader' 
            }

4.打包图片

{ 
                // 问题:默认处理不了 html 中 img 图片 
                // 处理图片资源 
                test: /\.(jpg|png|gif)$/, 
                // 使用一个 loader 
                // 下载 url-loader file-loader 
                loader: 'url-loader', options: { 
                    // 图片大小小于 8kb,就会被 base64 处理 
                    // 优点: 减少请求数量(减轻服务器压力) 
                    // 缺点:图片体积会更大(文件请求速度更慢) 
                    limit: 8 * 1024, 
                    // 问题:因为 url-loader 默认使用 es6 模块化解析,而 html-loader 引入图片是 commonjs 
                    // 解析时会出问题:[object Module] 
                    // 解决:关闭 url-loader 的 es6 模块化,使用 commonjs 解析 
                    esModule: false, 
                    // 给图片进行重命名 
                    // [hash:10]取图片的 hash 的前 10 位 
                    // [ext]取文件原来扩展名 
                    name: '[hash:10].[ext]' 
                }
            },

5.devserver(开发服务器)

devServer: { 
        // 项目构建后路径 
        contentBase: resolve(__dirname, 'build'), 
        // 启动 gzip 压缩 
        compress: true, 
        // 端口号 
        port: 3000, 
        // 自动打开浏览器 
        open: true 
    }

webpack 生产环境的基本配置

猜你喜欢

转载自blog.csdn.net/weixin_44749729/article/details/107461379