Webpack5 快速入门

2022-12-06 15:45:07 浏览数 (1)

  • 1. webpack 介绍
  • 2. webpack 基本使用
  • 3. webpack 5大核心概念
  • 4. webpack 配置文件
  • 5. webpack 运行脚本
  • 6. webpack 处理样式资源
    • 一、处理 css 资源
    • 二、处理 less 资源
    • 三、处理 scss 资源
    • 四、处理 stylus 资源
  • 7. webpack 处理图片资源
  • 8. webpack 文件输出目录配置
  • 9. webpack 自动清空上次打包文件
1. webpack 介绍

webpack 官网: https://webpack.js.org

一、webpack  是什么?

webpack 是当前市场上最流行的打包工具

webpack 是代码编译工具,webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具,俗称: 打包工具

二、为什么需要打包工具?

源码下载站

开发时,我们会使用框架(Vue、React),ES6 模块化语法,Less/Sass 等 css 预处理器等语法进行开发。这样的代码浏览器是不能识别的,要想在浏览器运行必须经过编译,变成浏览器能识别的 JS、CSS 等语法,才能正常运行。

所以,我们需要打包工具帮我们完成这件事,除此之外,打包工具还能压缩代码、做兼容性处理,提升代码性能等

2. webpack 基本使用

构建 JS 模块化语法

代码语言:javascript复制
├── public│   └── index.html└── src    ├── js    │   └── utils.js    └── main.js

src/js/utils.js

代码语言:javascript复制
export const sum = (...args) => {    return args.reduce((sum, item) => sum  = item, 0)};

src/main.js

代码语言:javascript复制
import { sum } from './js/utils';console.log(sum(1, 2, 3, 4, 5));

public/index.html 中引入 src/main.js

代码语言:javascript复制
<script src="../dist/main.js"></script>

初始化 npm 项目,安装 webpack 依赖,进行打包

代码语言:javascript复制
npm init -ynpm i webpack webpack-cli -Dnpx webpack ./src/main.js --mode=development
3. webpack 5大核心概念

Webpack 的配置是围绕 5 大核心概念展开的,这五个概念非常重要

一、entry (入口)

指示 Webpack 从哪个文件开始打包

二、output (输出)

指示 Webpack 打包完的文件输出到哪里去,以及如何命名等

三、loader (加载器)

webpack 本身只能处理 js,json 等资源,其他资源(vue,css,scss)需要借助相应的 loader,Webpack 才能解析

四、plugins (插件)

扩展 Webpack 的功能

五、mode (模式)

开发模式 (development)、生产模式 (production)

4. webpack 配置文件

创建配置文件,配置 entry 入口

在项目根目录下新建文件: webpack.config.js,文件名称必须是这个,文件内容如下所示:

代码语言:javascript复制
module.exports = {    entry: "./src/main.js"};

output 输出

以下配置示例中的 output 中 path 和 filename 是默认值

代码语言:javascript复制
// nodejs 核心模块,专门用来处理路径问题const path = require("path")module.exports = {    // 入口    entry: "./src/main.js", // 相对路径    // 输出    output: {        // 输出路径        // __dirname 是 nodejs 的变量,代表当前文件所在目录        path: path.resolve(__dirname, 'dist'), // 绝对路径        // 文件名        filename: "main.js",    }};
5. webpack 运行脚本

修改 package.json 文件,添加一个运行脚本。懂得都懂,添加后就可以使用 npm run build 命令进行打包了

代码语言:javascript复制
"scripts": {    "build": "webpack --mode=development"},
6. webpack 处理样式资源

一、处理 css 资源

创建 src/css/index.css 文件,文件内容如下:

代码语言:javascript复制
.box1 {    width: 150px;    height: 150px;    color: red;    font-size: 18px;    background: lightgreen;}

src/main.js 中导入 css 文件

代码语言:javascript复制
import "./css/index.css"

执行打包命令,你就会看到以下错误提示。这是因为 webpack 默认无法处理 CSS 资源,需要安装并配置 css 加载器

代码语言:javascript复制
ERROR in ./src/css/index.css 1:0Module parse failed: Unexpected token (1:0)You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders

安装加载 css 资源所需的 loader【吐槽: webpack 官网这个坑货,给的安装命令中没有 style-loader】

代码语言:javascript复制
npm install css-loader style-loader -D

修改 webpack.config.js 配置文件,检测 css 文件,使用 loader 进行处理

代码语言:javascript复制
module.exports = {    // 加载器    module: {        rules: [            // loader 配置            {                // 只检测 .css 后缀的文件                test: /.css$/i,                // loader 的执行顺序: 从右到左                // css-loader 将 css 资源编译成 commonjs 的模块到 js 中                // style-loader 将 js 中的 css 通过创建 style 标签添加到 html 文件中生效                use: ["style-loader", "css-loader"],            },        ],    },};
二、处理 less 资源

创建 src/less/index.less 文件,文件内容如下:

代码语言:javascript复制
@color: purple;.less {    width: 150px;    height: 150px;    color: @color;    font-size: 20px;    background: lightcoral;}

src/main.js 中导入 less 文件

代码语言:javascript复制
import "./less/index.less"

安装加载 less 资源所需的 loader

代码语言:javascript复制
npm install less less-loader --save-dev

修改 webpack.config.js

代码语言:javascript复制
module.exports = {    module: {        rules: [            {                test: /.less$/i,                use: [                    // compiles Less to CSS                    "style-loader",                    "css-loader",                    "less-loader",                ],            },        ],    },};
三、处理 scss 资源

创建 src/scss/index.sass 文件,文件内容如下:

代码语言:javascript复制
$color: bluebody    .sass        width: 150px        height: 150px        color: $color        font-size: 20px        background: yellowgreen

创建 src/scss/index.scss 文件,文件内容如下:

代码语言:javascript复制
$color: black;body {    .scss {        width: 150px;        height: 150px;        color: $color;        font-size: 20px;        background<sp

0 人点赞