Webpack5 学习笔记

课程链接:1.2.4-自定义Webpack配置_哔哩哔哩_bilibili

webpack cli 命令
npx webpack --help 显示所有命令
npx webpack 打包安装生成dist文件夹
npx webpack --stats detailed 显示安装细节
npx webpack --entry ./src/index.js --mode production 以index.js作为入口文件

Webpack配置

  • 使用 export default func 之后,import func 注意不要加花括号
  • 为了取代cli命令npx webpack --entry ./src/index.js --mode production ,采用自定义webpack配置,根目录下创建webpack.config.js
const path = require('path');
module.export = {
    entry: '',
    output: {
        filename: 'bundle.js',
        // __dirname 表示webpack.config.js所在的目录,path.resolve()方法可以将路径转换为绝对路径
        path: path.resolve(__dirname, '/dist')
    },
    mode: 'none'
}
  • 运行npx webpack, 获得bundle.js, 在index.html中引入bundle.js文件

自动引入资源

  1. 什么是插件
    如下图webpack编译过程中需要一些工具来执行特定的任务(打包优化,资源管理..),这些工具就是plugin
    插件

    Webpack插件列表:插件 | webpack 中文文档
  2. 使用HtmlWebpackPlugin自动引入资源文件
  • 安装插件 npm install -D html-webpack-plugin
  • 配置插件
const path = require('path')
const HTMLWebpackPlugin = require('html-webpack-plugin') // 引入HTMLWebpackPlugin插件

module.exports = {
    entry: './src/index.js',
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, './dist')
    },
    mode: 'none',
    plugins: [
        new HTMLWebpackPlugin({
            template: './index.html',
            // 生成的文件名,默认为index.html
            filename: 'app.html',
            inject: 'body', // 注入的位置,默认为head
        })
    ]
}
  • 运行npx webpack,生成/dist/app.html 包含了以下引用
    <script defer src="bundle.js"></script></body>
  1. 清理dist历史文件
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, './dist'),
        clean: true // 配置清理dist文件
    },

搭建开发环境

  1. mode设置为development
  2. 使用sourcemap进行代码调试
    注意,介于安全与性能风险的考虑,以下配置只适合开发环境
    更新webpack.config.js
    mode: 'development',
    devtool: 'inline-source-map', // 生成源代码到打包后代码的映射,便于调试
  1. 使用watch mode(观察者模式)
    每次编译代码时,手动运行npx webpack会显得很麻烦。我们可以在webpack启动时添加“watch”参数。如果其中一个文件被更新,代码将重新编译,不需要手动运行整个构建
    npx webpack --watch
  2. 使用webpack-dev-server
    提供了一个基本的web server, 并且具有live reloading(实时重新加载)功能,编译完成后自动刷新浏览器页面
  • 安装插件 npm install -D webpack-dev-server
  • 添加配置
    // 启动webpack-dev-server服务
    devServer: {
        static: './dist', // 告诉服务器从什么位置查找文件
    },

注意:webpack-dev-server在编译之后不会写入到任何输出文件。而是将bundle文件保留在内存中,然后将它们serve到server中,就好像它们时挂载在server根路径上的真实文件一样

资源模块

4中类型:

  • asset/resource 将文件输出到指定目录,并生成唯一的文件名
  • asset/inline 将文件转换为base64编码,直接嵌入到代码中
  • asset/source 导出资源的源代码
  • asset 在导出一个data URL和发送一个单独的文件之间自动选择

loader

  1. 为了在Javascript模块中import一个CSS文件,你需要安装style-loader和css-loader,并在module配置中添加这些loader:
    npm install -D style-loader css-loader less-loader
{
            test: /\.css|less$/,
            use: ['style-loader', 'css-loader', 'less-loader'] // 使用style-loader和css-loader处理CSS文件,loader链式调用,这里的顺序是逆序
        }
  1. 抽离和压缩css
  • 抽离 npm install mini-css-extract-plugin -D
  • 压缩 npm install css-minimizer-webpack-plugin -D
   optimization: {
        minimizer: [
            new CssMinimizerPlugin()
        ]
    }
  1. 加载font字体
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容