• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

webpack使用流程和配置

武飞扬头像
hu_tongxue
帮助1

在实际开发中, 项目上线: 前端用webpack把我们项目代码进行打包,然后交给公司后台人员发布到服务器的过程

  • 官网:https://webpack.docschina.org/

  • 1.什么是webpack

    • webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具

      • 静态: 项目中的静态资源如css、图片等文件

      • 模块: js文件(模块化开发中,一切js文件皆为模块)

      • 打包:主要帮你压缩代码,然后还会加密、混淆代码防止被人偷窥~

        • 打包还有一个意思: 就是会把你项目中很多个文件压缩成一个文件
  • 2.webpack作用

    • 分析、压缩、打包代码
  • 3.webpack好处

    • 减少文件体积、减少文件数量
    • 提高网页加载速度

学新通

学新通

Webpack基本使用流程

1.1-初始化npm : npm init -y

  • webpack是node环境中的一个工具类模块,它本身是基于nodejs

    • 因此:要想使用webpack,前提是必须要安装node环境

1.2-使用node安装webpack

  • 1.安装命令: npm init -y

    • -D含义: 相当于 --save-d , 将webpack作为开发依赖。

      • 因为webpack只是一个代码压缩打包工具,只需要在开发阶段使用,而发布阶段用不上。因此一般放入开发依赖
    • 本地包 : 不同的项目由于webpack版本不同,比如一些老版本项目可能用最新版的webpack无法打包。 因此不建议将webpack作为全局包安装。

  • 2.检测是否安装成功: npx webpack -v

    • 这个命令其实就是检查你的node_module命令下面有没有webpack文件,有的话就读取这个文件里面的版本信息

1.3-在src文件夹中新建js文件(模块)

  • webpack默认的打包文件入口目录是 ./src/index.js , 因此必须要有src这个目录,而且还要有index.js , 否则就会报错

    • 这个目录后期可以修改,但是我们需要先了解webapck默认是怎么操作的

学新通

1.4-在项目根目录下执行打包命令: npx webpack

  • 1.webpack打包命名全称是: npx webpack js文件路径

    • 例如: npm webpack ./src/xxx.js
    • 如果没有写js文件路径,那么webpack就会自动打包项目根目录下的 ./src/index.js
  • 2.当项目js代码发生变化时如何打包?

    • 重新执行打包命令即可

学新通

  • 观察项目变化

    • webpack会把打包的js文件默认放入./dist/man.js

学新通

  • (1)为什么没有打包add.js

    • 因为index.js文件中并没有去导入add.js (没有形成依赖关系)
  • (2)如何才会打包add.js

    • 在index.js中导入add.js即可
  • (3)使用commonJS规范导入模块,观察 ./dist/man.js 变化

    • webpack同时支持commonjs模块化规范与ES6模块化规范,所以使用ES6模块化也是可以识别的哟!

1.5 小结

  • 1.webpack打包流程分为哪三个步骤

    • 初始化npm : npm init -y
    • 下载安装webpack工具:npm i webpack webpack-cli -D
    • 开始打包:npx webpack
  • 2.默认webpack打包的入口文件(需要压缩打包的文件)是哪一个?

    • ./src/index.js
  • 3.默认webpack打包的出口文件(压缩后的文件)是哪一个

    • ./dist/main.js
  • 4.如何让webpack打包更多的文件

    • 在入口文件中,导入其他模块
    • 被打包的资源一定要和入口文件,形成间接或直接的依赖关系
  • 5.webpack模块化默认支持哪一种规范?

    • comonJS规范

      • 导出使用 module.exports
      • 导入使用require

Webpack配置文件

webpack配置文件作用: 修改webpack默认的配置

例如,webpack默认的配置如下

打包命令: npx webpack

入口文件: ./src/index.js

出口文件: ./dist/main.js

通过修改webpack配置文件,可以将上面的一些默认配置全部修改掉。

如果把webpack比喻成一个人,那么配置文件就相当于人身上穿的衣服。 不同的人穿衣搭配风格不同。(不同的项目webpack配置是不相同的)

1.1-创建配置文件

  • 在项目根目录下创建默认配置文件: webpack.config.js
  • 在配置文件中导出配置
module.exports = {
    //自定义配置写在这里(对象键值对)

}

学新通

1.2-webpack常见配置作用

  • 1.mode : 打包模式

    • 默认值production : 生产模式(压缩,混淆,加密… 不可读)
    • development :开发模式(代码不会压缩 混淆)
  • 2.output: 出口文件(对象类型)

    • path : 设置出口文件夹(必须是绝对路径)

      • 默认值: ${__dirname}/dist
    • filename: 设置出口js文件名 (相对于path路径)

      • 默认值: main.js
  • 3.entry : 出口文件

    • 默认值(相当于项目根目录): ./src/index.js
      学新通

1.3-webpack其他配置

注意:这个配置是写在package.json文件中的script对象里面

  • “build” : “webpack”

    • 相当于是给你的当前项目新增了一个命令: npm run build

      • 这个命令等价于npx webpack, 只是额外新增了一个命令。 原来的默认命令还是可以用
  • “dev” : “webpack --config webpack.dev.js”

    • 相当于给你的当前项目新增了一个命令 : npm run dev

      • 这个命令将不再使用默认的配置文件webpack.config.js, 而是使用自定义配置文件 webpack.dev.js
  • 注意点

    • 如果使用npm run build : 还是用默认配置文件来配置你的webpack

    • 如果使用npm run dev : 就会使用自定义配置文件来配置你的webpack

      • 这个命令相当于npx webpack --config webpack.dev.js

        • npx webpack --你的配置文件 : 用自定义配置文件打包webpack

学新通

1.4-小节: npm run build 原理流程

学新通

Webpack插件与加载器使用

默认情况下, webpack只能处理js或json文件。 但是项目中不仅仅有js文件,还有其他一些资源文件如:css、html、图片等

  • 插件作用 : 给webpack添加额外的功能

    • 加载器(loader) : 让webpack识别编译更多的文件(如css、less、图片等等)

      • webpack中一切文件都是加载器
    • 其他插件(plugin): 额外功能(如浏览器兼容性)

1.1-处理html文件插件:html-webpack-plugin

  • 1.下载插件: npm i html-webpack-plugin -D

  • 这个插件只是开发用到,发布用不到。 因此一般作为开发依赖

  • 2.配置插件 : 两件事

    • 在 webpack.config.js中导入插件

      • const HtmlWebpackPlugin = require('html-webpack-plugin')
    • 在 plugins中配置插件(不同的插件需要去官网找具体配置项)

      • plugins: [
               new HtmlWebpackPlugin({ // 打包输出HTML
                    minify: { // 压缩HTML文件
                        removeComments: true, // 移除HTML中的注释
                        collapseWhitespace: true, // 删除空白符与换行符
                        minifyCSS: true// 压缩内联css
                    },
                    template: `./public/index.html` // 指定压缩哪一个html文件, 相对于根目录
                })
            ]
        

学新通

学新通

1.2-处理css文件加载器

1.2.1-前置知识储备:css文件模块化语法

前置知识点 : 之前都是通过link标签的href属性来导入css文件,那么在模块化语法中如何导入css呢

  • 在一个css文件中导入另一个css文件(与less导入语法类似)

    • @import "css文件名";

      • 特别注意后面那个分号哟,那是css的语法规范

学新通

学新通

1.2.2-下载插件

  • npm i css-loader -D

    • 开发依赖: 这个插件是让webpack可以识别css文件(因为webpack默认只识别js文件)
  • npm i style-loader -D

    • 开发依赖:这个插件是让webpack在打包的时候,把样式插入到html文件中
  • 简单的说: css-loader是为了webpack能够识别并打包css文件的, style-loader是为了能让你的css文件最终在html中渲染的(底层是在html文件的head中生成style把样式插入进去)

学新通

1.2.3-配置插件

webpack中大多数插件都是要在配置文件中,配置之后才会生效的哟!

  • 在webpack.config.json中配置css插件
module:{ // 处理非js模块
    rules:[ // 规则
      {
        test: /.css$/,         // 正则测试
        use: ['style-loader','css-loader']  // loader
      }
    ]
  }

学新通

1.3-处理less文件加载器

在实际开发中,并不是所有的项目样式都会用css语法来写的。 有的项目会用less语法来写样式。 而且这种场景也是很多的。

  • 官网:https://www.webpackjs.com/loaders/less-loader/#安装

  • 1.下载插件: npm i less-loader less -D

    • 开发依赖: 这个命令其实是一次性下载两个插件

      • less插件:把你的less语法转成css语法

        • 相当于之前vscode那个easyless插件作用
      • less-loader插件:让webpack可以识别less文件

  • 2.配置插件(注意书写位置,别写错位置了哈)
  • {
        test: /.less$/,     // 正则匹配,以.less结尾的文件
        // 如果发现是.less文件,则由如下三个loader来处理
        // 处理的顺序是   从右向左
        // less-loader: 作用是加载less文件,会帮你less转成css
        // css-loader: 作用是允许.js中引入.css
        // style-loader:作用是在.html上创建style标签,把css代码输入进去
        use: ['style-loader', 'css-loader', 'less-loader'] // 匹配成功,使用指定的loader
    }
    
  •  

学新通

  • 3.自己随便写个less文件测试一下吧。

    • 记得把index.js、index.less里面导包的之后,之前那个css后缀改成less后缀哟

1.4-处理图片文件加载器(webpack自带)

1.4.1-处理文件文件配置

  • 处理图片资源,webpack老版本需要装插件, 新版本自带插件(5之后版本),无需安装

  • 在配置文件中配置图片文件

    • {
          test: /.(png|jpg|gif|jpeg)$/i, // 匹配图片文件
          type: 'asset' // 在导出一个 data URI 和一个单独的文件之间自动选择
      }
      

学新通

1.4.2-前置知识储备: 模块化语法如何使用图片

页面的图片文件有两种加载模式

第一种: 作为css样式背景图

第二种:作为img标签的src属性

  • 模块化导入图片

    • import 变量名 from ‘图片路径’

      • 这个原理有点类似于之前ajax讲过的文件预览,先将图片文件生成一个本地url,然后显示到img标签上

学新通

1.4.3-图片压缩规则

学新通

1.5.1-自动清理目录插件

  • 1.自动清理目录插件:clean-webpack-plugin

    • 作用描述: 每一次我们打包的之后,因为上一次打包页面看着不舒服。 喜欢把之前的文件给删掉。 这样就可以确保住本金次打包一定是最新的打包文件。

      • 这个插件就是每一次打包的时候自动帮你清理上一次打包的文件目录(用起来之后,我们看不到实际变化,就是一个心理作用。 它帮你把之前打包的文件先删除了,然后再生成本次打包文件)
  • 2.安装:npm i clean-webpack-plugin -D

  • 3.配置(webpack.config.js)

    • 先导入: const { CleanWebpackPlugin } = require('clean-webpack-plugin')

    • 在plugins配置

      • plugins:[
           new CleanWebpackPlugin(),
        ]
        

1.5.2-字体图标(自带插件,配置即可)

学新通

webpack服务器开发

大家有没有发现: 我们每一次修改代码,都需要重新打包才能看到效果?

类似于前端:每一次修改代码,都需要重新刷新页面才能生效

类似于nodejs:每一次修改代码,都需要重新执行node命令才能生效

那么webpack有没有那种,一敲代码自动打包的工具呢?

类似于前端live-server : 一敲代码,页面自动更新

类似于nodejs的nodemon : 一敲代码,自动重启服务器

那必须有啊!!!

  • 1.安装插件:npm i webpack-dev-server -D
  • 2.配置插件
devServer: {
    host: '127.0.0.1',  // 配置启动ip地址
    port: 3000,  // 配置端口
    open: true  // 配置是否自动打开浏览器
}

学新通

  • 3.配置package.json文件
"scripts": {
    "dev": "webpack-dev-server",  
   // 它默认会找webpack.config.js文件
   
   "build": "webpack-dev-server --config  webpack.config.js" 
    // 指定使用webpack.config.js配置文件文件
},
  • 4.启动服务器: npm run dev

    • webpack实时打包、实时编译、实时浏览器查看效果,一条龙服务到位

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbfajj
系列文章
更多 icon
同类精品
更多 icon
继续加载