博客
关于我
Webpack教程:如何从头开始设置 webpack 5
阅读量:557 次
发布时间:2019-03-09

本文共 3520 字,大约阅读时间需要 11 分钟。

Webpack 实用指南

Webpack 是现代前端开发中不可或缺的工具,它能够将复杂的项目打包成高效的 bundles。以下是使用 Webpack 的实用指南,涵盖从安装到高级配置的全过程。

1. 安装

首先,创建一个项目目录并初始化包.json:

mkdir webpack-tutorialcd webpack-tutorialnpm init -y

安装必要的依赖项:

npm install -D webpack webpack-cli html-webpack-plugin clean-webpack-plugin sass-loader postcss-loader style-loader babel-loader

创建 src 目录并添加 index.js 文件:

// src/index.jsconsole.log('Interesting!');

创建 webpack 配置文件:

// webpack.config.jsconst path = require('path');const HtmlWebpackPlugin = require('html-webpack-plugin');const CleanWebpackPlugin = require('clean-webpack-plugin');module.exports = {  entry: {    main: path.resolve(__dirname, './src/index.js'),  },  output: {    path: path.resolve(__dirname, './dist'),    filename: '[name].bundle.js',  },  module: {    rules: [      {        test: /\.js$/,        exclude: /node_modules/,        use: 'babel-loader',      },    ],  },  plugins: [    new HtmlWebpackPlugin({      title: 'Webpack Boilerplate',      template: path.resolve(__dirname, './src/template.html'),      filename: 'index.html',    }),    new CleanWebpackPlugin(),  ],};

2. 基本配置

Entry

entry 配置指定了 Webpack 从哪里开始打包。例如:

entry: {  main: path.resolve(__dirname, './src/index.js'),},

Output

output 配置定义了打包后的文件路径和文件名。例如:

output: {  path: path.resolve(__dirname, './dist'),  filename: '[name].bundle.js',},

在 package.json 中添加构建脚本:

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

运行构建命令:

npm run build

3. 插件

Webpack 提供了强大的插件系统,可以扩展其功能。常用的插件包括:

  • html-webpack-plugin:自动生成 HTML 模板
  • clean-webpack-plugin:清理构建目录
  • sass-loader:处理 SCSS 文件
  • babel-loader:将现代 JavaScript 转换为浏览器支持的格式

4. HTML 模板

创建或修改 src/template.html:

  
<%= htmlWebpackPlugin.options.title %>

在 webpack.config.js 中添加 HTML 插件配置:

plugins: [  new HtmlWebpackPlugin({    title: 'Webpack Boilerplate',    template: path.resolve(__dirname, './src/template.html'),    filename: 'index.html',  }),  new CleanWebpackPlugin(),],

5. 模块加载

Webpack 可以处理多种文件类型。例如:

  • JavaScript:使用 babel-loader
  • CSS 和 SCSS:使用 sass-loadercss-loader
  • 图像:使用 asset/resource
  • 字体和 SVG:使用 asset/inline

在 webpack.config.js 中添加样式处理规则:

module: {  rules: [    {      test: /\.js$/,      exclude: /node_modules/,      use: 'babel-loader',    },    {      test: /\.(scss|css)$/,      use: ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader'],    },    {      test: /\.(ico|gif|png|jpg|jpeg)$/,      type: 'asset/resource',    },    {      test: /\.(woff(2)?|eot|ttf|otf|svg)/,      type: 'asset/inline',    },  ],},

6. 开发服务器

为了提升开发效率,使用 webpack-dev-server

安装依赖项:

npm install -D webpack-dev-server

修改 package.json:

{  "scripts": {    "start": "webpack serve"  }}

在 webpack.config.js 中启用开发模式:

module.exports = {  mode: 'development',  devServer: {    historyApiFallback: true,    contentBase: path.resolve(__dirname, './dist'),    open: true,    compress: true,    hot: true,    port: 8080,  },  plugins: [    new webpack.HotModuleReplacementPlugin(),  ],};

运行开发服务器:

npm start

7. 高级配置

模块分隔

使用 webpack-merge 合并不同环境的配置:

安装依赖项:

npm install -D webpack-merge

创建不同的配置文件:

// webpack/prod.config.jsconst baseConfig = require('./webpack.config.js');module.exports = merge(baseConfig, {  mode: 'production',  output: {    filename: '[name].min.js',  },});
// webpack/dev.config.jsconst baseConfig = require('./webpack.config.js');module.exports = merge(baseConfig, {  mode: 'development',  devServer: {    // 开发服务器配置  },});

8. 注意事项

  • Webpack 5:与之前版本有显著差异,特别是对模块类型的处理。
  • 依赖项管理:确保所有依赖项都通过 npm安装或 yarn add。
  • 构建缓存:可以使用 cache 插件提升构建速度。

通过以上配置,您可以轻松使用 Webpack 进行项目打包和开发。随着对 Webpack 的深入了解,您可以根据项目需求灵活配置,充分发挥其强大功能。

转载地址:http://ocxsz.baihongyu.com/

你可能感兴趣的文章
pt-online-schema-change使用详解
查看>>
PyTorch 模型性能分析和优化 — 第 2 部分
查看>>
PTA L1-011 A-B
查看>>
pta l2-1紧急救援(Dijkstra)
查看>>
pta求阶乘序列前n项和_学霸整理——求数列的通项公式解法集锦,转化、归纳一文全懂...
查看>>
SpringBoot中集成Redis实现对redis中数据的解析和存储
查看>>
pthread_create导致的程序崩溃
查看>>
ptyhon POSIX
查看>>
public private protected default小结
查看>>
PublicCMS怎么用金蝶Apusic Application Server部署
查看>>
publish over ssh、 Kubernetes Continuous Deploy插件
查看>>
PubMed详解-ChatGPT4o作答
查看>>
Pubsub Extensions for Smack
查看>>
pulsar mq 单体验证demo, docker启动pulsar mq验证生产者消费者命令
查看>>
pulsar mq 学习使用,pulsar java客户端, spring boot pulsar , spring pulsarTemplate如何使用 pulsar4.0.0
查看>>
Pulsar mq 设置延迟消息模式 pulsar mq 发送延迟消息 pulsar如何发送消费延时消息
查看>>
Pulsar 游标回滚,移动偏移量测试
查看>>
pulsar开源消息队列_了解Pulsar---Pulsar工作笔记001
查看>>
Puppet 在大规模分布式系统中的性能优化策略有哪些?
查看>>
puppet 学习总结(1)——puppet 入门详解
查看>>