webpack打包工具的基本使用

article/2025/9/24 13:32:04

目录

一、webpack是什么?

二、webpack的基本使用

1、初始化项目

2、安装webpack及其依赖

3、使用

3.1 配置webpack:

3.2 在package.js文件中添加打包命令

3.3 执行打包命令

三、webpack相关插件

插件一:HtmlWebpackPlugin

插件二:BundleAnalyzerPlugin

 插件三:splitChunks

四、非js文件模块化打包 


一、webpack是什么?

webpack是一个模块化打包工具。我们在开发的时候通常都是使用模块化的方式进行开发,但是浏览器对模块化的支持程度很低,因此我们需要借助webpack打包工具将模块化代码打包生成浏览器支持的规范。简单来说,webpack就是用来将项目模块化文件打包生成普通脚本文件,然后再引入到html文件中。

二、webpack的基本使用

1、初始化项目

执行下面的命令可以在项目文件夹下生成默认的package.json文件

npm init -y

2、安装webpack及其依赖

cnpm i webpack webpack-cli --save-dev

3、使用

我们在项目文件夹下新建一个src文件夹,然后在src下新建三个js文件,分别为a.js、b.js、main.js,其中main.js作为入口文件。

 我们在a.js中使用qs工具库,在b.js中使用lodash工具库,需要先安装qs和lodash:

cnpm i qs lodash -S

a.js

import qs from 'qs'let obj = {name: 'zhangsan',age: 12
}export default {url: "/user/login",data: qs.stringify(obj)
}

b.js

import _ from 'lodash'let obj = {name: "lisi",age: 15
}export default _.cloneDeep(obj)

在main.js中导入a.js和b.js并使用:

import a from './a'
import b from './b'let dom = document.createElement('div')
dom.innerText = JSON.stringify(a)
document.body.appendChild(dom)let dom2 = document.createElement('div')
dom2.innerText = JSON.stringify(b)
document.body.appendChild(dom2)

如果我们此时直接将这三个js文件引入我们的html文件中是无法使用的,因为浏览器并不支持ES6模块化(import、export),所以我们需要使用webpack将这三个js文件打包生成普通脚本文件再引入html文件中使用:

3.1 配置webpack:

在我们的项目文件夹下新建一个webpack.config.js文件

webpack.config.js

// 导入path模块,用于处理文件和目录的路径
const path = require('path')
module.exports = {//提供 mode 配置选项,告知 webpack 使用development(开发)模式的内置优化mode: 'development',// 入口文件 (注意:入口使用相对路径)entry: './src/main.js',// 打包完成后输出到哪个文件 output: {// 输出文件的路径// __dirname表示当前文件模块所属的绝对路径// path.resolve() 用来拼接路径path: path.resolve(__dirname, 'dist'),// 输出文件的文件名filename: 'bundle.js',// 每次打包都重新生成clean: true}
}

3.2 在package.js文件中添加打包命令

"build": "webpack --config webpack.config.js"

3.3 执行打包命令

npm run build

打包完成后,会生成一个dist文件夹,文件夹下有一个bundle.js文件:

 此时我们在dist文件夹下新建一个index.html文件,并将bundle.js文件引入,然后运行index.html文件就可以了:

index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script src="./bundle.js"></script>
</body>
</html>

三、webpack相关插件

插件一:HtmlWebpackPlugin

由于我们在出口 (output) 中设置了 clear:true ,因此每次我们改动了代码重新打包项目的时候,都会把dist文件夹清理掉重新生成一个新的打包文件,我们的html文件也会被清理掉,因此每次打包都需要我们重新建一个html文件,而使用HtmlWebpackPlugin插件就不再需要我们每次在打包后重新建一个html文件,因为这个插件会帮我们自动生成一个html文件。

安装插件HtmlWebpackPlugin

cnpm install --save-dev html-webpack-plugin

使用插件

webpack.config.js

const path = require('path')
// 导入插件
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {mode: 'development',entry: './src/main.js',output: {path: path.resolve(__dirname, 'dist'),filename: 'bundle.js',clean: true},// 使用插件plugins:[new HtmlWebpackPlugin()],
}

插件二:BundleAnalyzerPlugin

这是一个可视化图形插件,用来分析模块化大小,它通常用来做前端性能优化,比如通过可视化,我们可以知道打包完后哪个文件比较大,我们就可以将大文件分成小模块,同时还可以删除误引入的第三方依赖。

安装插件BundleAnalyzerPlugin

cnpm i --save-dev webpack-bundle-analyzer

使用插件

webpack.config.js

const path = require('path')
// 导入插件
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {mode: 'development',entry: './src/main.js',output: {path: path.resolve(__dirname, 'dist'),filename: 'bundle.js',clean: true},// 使用插件plugins:[new HtmlWebpackPlugin(),new BundleAnalyzerPlugin()],}

 插件三:splitChunks

这个插件用来抽离公共重复的依赖,将其单独放在一个脚本文件,以优化前端性能。

这个插件是webpack自带的,不需要安装。

使用插件:

webpack.config.js

const path = require('path')
module.exports = {// 可以设置多个入口文件 entry:{home:'./src/home.js',main:'./src/main.js'},output:{path:path.resolve(__dirname,'dist'),// [name]是原先文件的名字filename:'bundle_[name].js',clean:true},// 使用插件optimization:{splitChunks: {chunks: 'all',}}
}

四、非js文件模块化打包 

打包css文件

安装转换工具:

cnpm i css-loader style-loader --save-dev

使用:
webpack.config.js

const path = require('path')
module.exports = {mode: 'development',entry: './src/main.js',output: {path: path.resolve(__dirname, 'dist'),filename: 'bundle.js',clean: true},// 可以设置非js文件的转换规则module:{rules:[// 设置css文件转换规则{// 正则表达式匹配以.css结尾的文件test:/\.css$/,// 转换使用的工具use:['style-loader','css-loader']}]}
}


http://chatgpt.dhexx.cn/article/3XxLsT1C.shtml

相关文章

webpack打包优化

目录 概述 打包优化-路由懒加载 问题 那什么是路由懒加载呢? 路由懒加载中的魔法注释 小结 打包优化-包大小分析 包大小分析 打包优化-去掉console-log webpack配置排除打包-整体分析 回顾 提问 思路 webpack配置排除打包-打包瘦身 目标 使用方式 webpack配置…

webpack打包工具的使用方法

目录 一、webpack打包工具 1、简介 2.npm补充 3.webpack一系列的步骤 1.npm init -y初始化文件生成package.json文件 2.npm install jquery -S安装jquery包&#xff0c; 3.卸载包的时候&#xff0c;用npm uninstall jquery -S(如果需要卸载的话) 4.在根目录上新建src文…

webpack 打包chunk

chunk的含义以及出现的情况 webpack特定术语在内部用于管理捆绑过程&#xff0c;输出束&#xff08;bundle&#xff09;由块组成。 是webpack 根据功能拆分出来的代码片段&#xff0c;包含三种情况 官方: 1.入口起点&#xff1a;使用entry配置手动地分离代码 **2.防止重复…

webpack打包报错

在执行npm run build对项目进行打包的时候遇到webpack打包报错的问题 在网上找到各种方法去解决&#xff0c;什么node版本不兼容啊重装node啊&#xff0c;什么saas没装好python环境啊&#xff0c;webpack版本兼容问题啊&#xff01;总之各种说法都看着去尝试解决了&#xff0c;…

webpack打包css

webpack打包 1.打包css2.打包逻辑1-1.webpack打包css逻辑 3.打包css4.打包成独立的css文件5.添加样式前缀6.格式校验7.压缩css8.我们为什么要用这个打包工具呢9.webpack的打包顺序10.总结 1.打包css 2.打包逻辑 1-1.webpack打包css逻辑 非js文件打包 需要对应的loadercss-loa…

初识webpack打包

初识webpack打包&#xff0c;小白入门 前言&#xff1a; webpack是一款基于node的构建工具&#xff0c;其中一大特色就是打包 因为现在前端已经工程化开发&#xff0c;写的代码已经不能直接在浏览器上运行了 这时候webpack会帮你把代码进行编译&#xff0c;打包成浏览器识别的…

webpack打包分析

分析一&#xff1a;打包的时间分析 如果我们希望看到每一个loader、每一个Plugin消耗的打包时间&#xff0c;可以借助于一个插件&#xff1a;speed-measure-webpack-plugin注意&#xff1a;该插件在最新的webpack版本中存在一些兼容性的问题&#xff08;和部分Plugin不兼容&am…

如何使用Webpack打包

简单的说了一下webpack是干嘛的&#xff0c;和webpack如何安装&#xff0c;如何进行打包&#xff0c;步骤很详细&#xff0c;感兴趣的同学可以试着操作一下。 文章目录 1、webpacks是什么&#xff1f;2、Webpack安装3、初始化项目4、使用webpack进行JS打包5、使用webpack进行CS…

webpack打包优化配置

文章目录 前言不进行任何打包配置代码分离splitChunkruntimeChunk动态导入 css文件处理css文件提取css文件压缩css实现Tree Shaking js实现Tree shakingTerserscope Hoisting打包优化没效果打包界面显示分析总结 前言 之前使用webpack进行项目搭建配置时&#xff0c;都是操作一…

webpack打包路径更改_webpack打包教程

创建package.json文件 命令:npm init 安装webpack npm install --save-dev webpack npm install --save-dev webpack-cli 全局安装: npm install --global webpack webpack-cli 打包 默认entry入口 src/index.js 默认output出口 dist/main.js 打包模式: webpack --mode deve…

Vue基础知识总结 9:vue webpack打包原理

&#x1f3c6;作者简介&#xff1a;哪吒&#xff0c;CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家&#x1f4aa;&#xff0c;专注Java硬核干货分享&#xff0c;立志做到Java赛道全网Top N。 &#x1f3c6;本文收录于&#xff0c;Java基础教程系列…

webpack 打包流程

流程梳理 在开始之前我们先对于整个打包流程进行一次梳理。 这里仅仅是一个全流程的梳理&#xff0c;现在你没有必要非常详细的去思考每一个步骤发生了什么&#xff0c;我们会在接下来的步骤中去一步一步带你串联它们。 整体我们将会从上边5个方面来分析Webpack打包流程: 初…

Webpack打包

webpack【依赖node环境】 什么是webpack&#xff1f; 从本质上将&#xff0c;webpack是一个现代的JavaScript应用的静态模板打包工具。 前端模块化&#xff1a; 前端模块化是指&#xff0c;通过将前端代码根据一定的规则解耦封装成几个代码文件&#xff08;模块&#xff09;&…

使用webpack打包vue项目

使用webpack打包vue项目 安装webpack工具&#xff0c;安装方式有两种&#xff1a;全局安装&#xff08;命令&#xff1a;npm install -g webpack webpack-cli&#xff09;以及安装在项目中&#xff0c;这里使用第二种&#xff1a; //在项目中安装&#xff0c;这里的-D表示运用到…

Idea 2017.3.+永久破解方法

一、下载Intellij IDEA2017.3.5x64旗舰版 去官网下载此处不赘述 二、下载破解jar包 链接在此http://idea.lanyus.com/jar/JetbrainsCrack-2.7-release-str.jar 三、打开安装好的IDEA路径下的bin目录 将下载好的jar包复制进来 例如 四、修改bin目录下的两个文件 idea.exe…

InetlliJ IDEA 2017破解(亲测,可用)

1.InetlliJ安装好后&#xff0c;启动&#xff0c;至License Activation界面&#xff1b; 2.选择License server&#xff1b; 3.在License server address中填入 http://idea.imsxm.com/

Intellij IDEA2017安装破解

IntelliJ IDEA&#xff08;2017&#xff09;安装和破解 IDEA 全称 IntelliJ IDEA&#xff0c;是Java语言开发的集成环境&#xff0c;IntelliJ在业界被公认为最好的java开发工具之一&#xff0c;尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(Git、svn、gith…

idea 2017 破解 可以使用

新版本的 自从升级到idea2017.3之后,之前的license server破解方法貌似已失效.于是找到大神用的破解插件,很好很强大. 安装好idea之后不要打开软件,从http://idea.lanyus.com/下载破解插件&#xff0c;这里面的插件是进行更新的&#xff0c;可能已经不是下面的文件名了&#xf…

IntelliJ idea2017 安装破解

下载 idea的安装包可以去官网下载&#xff0c;地址&#xff1a;IDEA各个历史版本请点击下载&#xff0c;选择自己需要的版本进行下载&#xff0c;本人下载的是ideaIU-2017.3.6.exe版本专业版。 安装 1、开始安装&#xff0c; 双击ideaIU-2017.3.6.exe&#xff0c;运行安装文…

intelliJ idea 2017破解

一、先进入Intellij IDEA的官网&#xff1a;https://www.jetbrains.com&#xff0c;下载安装 二、破解。 网上的破解方法较多&#xff0c;总结下来大概有下面几种办法供大家作为参考 声明&#xff1a;破解用于学习和试用&#xff0c;如果有经济条件的话&#xff0c;请支持…