【Webpack配置全解析】打造你的专属构建流程️(4)

server/2024/11/14 13:57:33/

webpack 提供的 CLI 支持很多参数,例如 --mode,但更多的时候,我们会使用更加灵活的配置文件来控制 webpack 的行为。默认情况下,webpack 会读取 webpack.config.js 文件作为配置文件,但也可以通过 CLI 参数 --config 来指定某个配置文件。

配置文件中通过 CommonJS 模块导出一个对象,对象中的各种属性对应不同的 webpack 配置。配置文件中的代码必须是有效的 Node.js 代码。当命令行参数与配置文件中的配置出现冲突时,以命令行参数为准。

基本配置

以下是一些常见的 webpack 配置项:

  1. mode:编译模式,字符串,取值为 developmentproduction,指定编译结果代码运行的环境,会影响 webpack 对编译结果代码格式的处理。
  2. entry:入口,字符串或数组,指定入口文件。
  3. output:出口,对象,指定编译结果文件。
示例配置文件
const path = require('path');module.exports = {// 编译模式mode: 'development', // 或 'production'// 入口文件entry: './src/index.js', // 单个入口// entry: {//   main: './src/index.js', // 多个入口//   another: './src/another.js'// },// 出口文件output: {filename: 'bundle.js', // 输出文件名path: path.resolve(__dirname, 'dist') // 输出路径},// 模块规则module: {rules: [{test: /\.js$/, // 匹配 .js 文件exclude: /node_modules/, // 排除 node_modules 目录use: {loader: 'babel-loader' // 使用 Babel 转换 ES6 代码}},{test: /\.css$/, // 匹配 .css 文件use: ['style-loader', 'css-loader'] // 使用 style-loader 和 css-loader}]},// 插件plugins: [new HtmlWebpackPlugin({template: './src/index.html' // 使用模板生成 HTML 文件})],// 开发服务器devServer: {contentBase: './dist', // 静态文件根目录hot: true // 热模块替换}
};
详细解释
  1. mode:编译模式

    • development:开发模式,不会对代码进行压缩,适合开发环境。
    • production:生产模式,会对代码进行压缩和优化,适合生产环境。
  2. entry:入口文件

    • 单个入口:entry: './src/index.js'
    • 多个入口:entry: { main: './src/index.js', another: './src/another.js' }
  3. output:出口文件

    • filename:输出文件名。
    • path:输出路径,使用 path.resolve 确保路径是绝对路径。
  4. module:模块规则

    • rules:定义一组规则,用于处理不同类型的文件。
      • test:匹配文件的正则表达式。
      • exclude:排除某些文件或目录。
      • use:使用的加载器(loader)。
  5. plugins:插件

    • 插件用于执行更复杂的任务,如生成 HTML 文件、压缩代码等。
    • 例如,HtmlWebpackPlugin 用于生成 HTML 文件。
  6. devServer:开发服务器

    • contentBase:静态文件根目录。
    • hot:启用热模块替换(HMR),在开发过程中自动刷新页面。
使用配置文件
  1. 创建配置文件

    在项目根目录下创建 webpack.config.js 文件,内容如上所示。

  2. 安装必要的依赖

    npm install --save-dev webpack webpack-cli babel-loader @babel/core @babel/preset-env html-webpack-plugin
    
  3. 运行构建

    package.json 中添加一个 build 脚本:

    {"scripts": {"build": "webpack"}
    }
    

    然后运行:

    npm run build
    
  4. 启动开发服务器

    如果你配置了 devServer,可以通过以下命令启动开发服务器:

    npx webpack serve
    

总结

通过本课程,你已经基本掌握了如何使用 webpack 配置文件来控制构建过程。配置文件提供了更灵活的方式来管理复杂的构建任务,使得开发更加高效和便捷。


http://www.ppmy.cn/server/141875.html

相关文章

HashMap的实现

HashMap 是 Java 集合框架中的一个核心类,它实现了 Map 接口,提供了基于哈希表的键值对存储。以下是 HashMap 的主要实现细节: 一、基本结构 数组(桶):HashMap 内部维护了一个数组(通常称为“桶…

「实战应用」如何可视化 DHTMLX Scheduler 中的资源工作量?

DHTMLX Scheduler是一个全面的 UI 组件,用于处理面向业务的 Web 应用程序中复杂的调度和任务管理需求。但是,某些场景可能需要自定义解决方案。例如,如果项目的资源(即劳动力)有限,则需要确保以更高的精度分…

工作和学习遇到的技术问题

写在前面 记录工作和学习遇到的技术问题,以求再次遇到可以快速解决。 1:Ubuntu TSL换源报错:Err:1 http://mirrors.aliyun.com/ubuntu focal InRelease 执行如下操作(已经操作的则忽略),首先在文件/etc/apt/sources…

手机租赁新趋势 轻松享受高端设备提升使用体验

内容概要 手机租赁的市场现状正在焕发新的活力,越来越多的人意识到,这不仅仅是“租”手机,而是一种全新的生活方式。想象一下,不再为每年推出的最新款智能手机而焦虑,手机租赁就像是时尚界的“快时尚”,让…

OpenCV图像预处理

""" 在计算机视觉和图像处理领域,图像预处理是一个重要的步骤,它能够提高后续处理(如特征提取、目标检测等)的准确性和效率。OpenCV 提供了许多图像预处理的函数和方法,以下是一些常见的图像预处理操作…

C++ 关于类与对象(中篇) 类的6个默认成员函数 详解

1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下 6 个默认成员 函数。 默认成员函数:用户没有显式实现,编译…

图论导引 - 第三章 第四节 - 11/13

相关算法 在本节中,我们简要描述与本章相关的三个问题——最短路径问题、中国邮递员问题和旅行商问题。 最短路径问题可以通过一种高效算法来解决,即通过一个有限的、逐步执行的程序能快速得出解决方案。邮递员问题只考虑一种特殊情况。旅行商问题&…

半导体企业如何利用 Jira 应对复杂商业变局?

以下是一篇关于如何利用 Jira 构建半导体企业数字化研发管理蓝图的文章。借鉴了 ONES 案例中的思路,并结合了 Jira 的特点,为半导体企业在复杂商业环境下进行数字化转型提供支持: 半导体企业如何利用 Jira 应对复杂商业变局? 在全…