热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:1小时入门,手把手教你学会用webpack打包,隔壁王大爷看了都说小伙子细!

篇首语:本文由编程笔记#小编为大家整理,主要介绍了1小时入门,手把手教你学会用webpack打包,隔壁王大爷看了都说小伙子细!相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了1小时入门,手把手教你学会用webpack打包,隔壁王大爷看了都说小伙子细!相关的知识,希望对你有一定的参考价值。






在这里插入图片描述




webpack

新建站点:⭐

这里的文件路径最好是英文

注意:站点文件名不可以起名叫webpack
在这里插入图片描述

为什么呢?

我们在 https://www.npmjs.com/ 中搜索 webpack模块是可以搜到的
在这里插入图片描述
在这里插入图片描述

在nodejs中我们通常是下载别人的模块再引用,当别人已经使用webpack上传,我们是不可以再用这个名字的。

下面,我们在站点文件内,右键git bash here
在这里插入图片描述
先进行初始化 ⭐

cnpm init -y

初始化成功:
在这里插入图片描述
初始化成功,站点自动生成package.json 文件
在这里插入图片描述
在这里插入图片描述

下载: ⭐

npm i webpack@4 -D

下载成功:
在这里插入图片描述

注意:此时的下载要小心版本,webpack版本5及其以上,出来时间不长,但不兼容以前的对应插件,而现在项目中所使用的版本是4,所以需要下载版本5之前的版本。

npm i webpack-cli@3 -D

下载成功:
在这里插入图片描述
在这里插入图片描述
终于下载成功了哈哈:

在这里插入图片描述

在站点新建文件src: ⭐
创建html和css、js文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

webpack的使用跟gulp一样,需要先创建一个文件:webpack.config.js
写打包配置
所有配置在这个文件中是以一个导出的形式写的
webpack跟gulp一样,是基于nodejs的

module.exports = {
所有配置都写在这里面
// 必须要有一个入口文件和出口文件
// 配置入口文件(主文件)
// 主文件就是要将其他所有的文件导入到这里,打包这个文件
}

我们想要运行一下main.js
需要在package.json 中添加指令

package.json文件中的scripts键,可以配置自定义的命令,scripts中的键代表自定义的命令:npm run 自定义的命令 - 运行的真实命令其实是,这个键对应的值

package.json中配置的命令的时候,有4个默认命令(start/test/restart/stop),是可以在运行的时候省略run, npm start

注意:添加逗号, 指令名自拟

在这里插入图片描述
使用

node ./src/js/main.js

我们在这webpack.config.js中配置 ⭐
在这里插入图片描述

在这个文件中配置好选项之后,在命令执行webpack命令就能完成打包。
配置好了以后,在命令行运行命令:webpack
默认情况下,这个命令是运行失败的,因为从来没有安装过这个命令 - 安装了webpack和webpack-cli两个模块,命令就从这两个模块中来

但是没有全局包的话,执行这个命令会报错,可以在package.json文件中配置命令来解决这个问题:

"start":"webpack"

以后就可以使用npm start来代替webpack这个命令了

在这个配置文件中,首先是将所有配置导出:

module.exports = {

}

webpack是基于nodejs的打包工具。

webpack打包的原理是将所有内容,包括js、css、图片等资源统统打包到一个js文件中,所以在这个配置文件中,首先要配置的是入口文件和出口文件:s

const path = require('path')
module.exports = {
// 入口
enter:path.join(__dirname,'./src/app.js'), / 这里必须是绝对路径
// 出口
output:{
path:path.join(__dirname,'./dist'),
filename:"indexjs" / 自定义出口文件
}
}

在这个打包过程中,可以将es的模块化,打包成能用的es的语法。

在这里插入图片描述

不错不错:

在这里插入图片描述



如果需要将打包后的文件,放在一个html中引入使用,就可以利用一个插件生成一个hml:

npm i html-webpack-plugin -D

在配置文件中引入:

const HtmlWebpackPlugin = require('html-webpack-plugin')

在配置项中,多加一个plugins的键:

const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
/ 入口
enter:path.join(__dirname,'./src/app.js'), / 这里必须是绝对路径
/ 出口
output:{
path:path.join(__dirname,'./dist'),
filename:"indexjs" / 自定义出口文件
},
所有插件的配置
plugins:[
/ 有其他插件都写在这里
new HtmlWebpackPlugin({
template:path.join(__dirname,"./public/index.html"),
app:"index.html",
inject:true / 是否将打包后的js注入到指定的模板文件中
}),
]
}

我们指定入口文件的时候,还可以使用对象的形式指定:

enter:{
"js/index":'./src/app.js'), / 这里可以使用相对路径
}

这里的键,表示生成以后的文件结构,但默认没有用,因为现在的出口文件被指定了,需要修改出口文件配置:

output:{
path:path.join(__dirname,'./dist'),
filename:"[name].js" / 使用变量,不固定了
},

在打包后的文件夹中,生成的新文件就是在enter中指定的结构中。

为了避免缓存,可以在生成的文件名后面,添加一个hash 值设为6
在这里插入图片描述

output:{
path:path.join(__dirname,'./dist'),
filename:"[name]-[hash:6].js" / 使用变量,不固定了
},

此时,当源文件不改变,不会改变hash,且只要改变源文件,会生成新的目标文件,需要借助一个插件来处理:

npm i -D clean-webpack-plugin@2.0.2

导入并使用: ⭐

const CleanWebpackPlugin=require("clean-webpack-plugin");
// 在插件配置中,初始化即可
new CleanWebpackPlugin()

每次打包都会出现一个黄色提示,这是在提示我们需要在配置文件中,需要指定是在开发环境还是在生产环境,这个配置是在选项配置中添加一个键:

mode:'development/production'

然后再次打包的时候就没有提示了。生产环境文件会压缩,开发环境文件不会压缩。

这个时候,我们可以在选项中添加一个:

devtool:"source-map"

如果在我们运行的目标文件中报错了,可以通过这个文件准确的定位到错误的源文件。
例: 设置 mode:‘development/production’

开发模式 mode:'development 不压缩代码

在main.js中设置一个错误
在这里插入图片描述

我们运行以后:

在这里插入图片描述
点击错误提示可以跳转到:
在这里插入图片描述
我们可以查看到源代码中具体是哪一个位置错误。

生产模式 :mode:production’ 压缩代码

会找不到源代码的错误所在,我们就可以添加 devtool:“source-map” 来解决问题 ⭐⭐
在这里插入图片描述

在这里插入图片描述

我们在开发过程中,有些文件是需要拷贝到目标文件夹中的,因为此时只能打包js文件和html文件,css和其他js文件是不能进行打包的,也拷贝不到目标文件夹中 - 静态css,所以将来打包后的html是会运行报错的,此时就需要用到另外一个插件:

npm i copy-webpack-plugin@6.4.1 -D

导入并使用:⭐

const CopyPlugin = require("copy-webpack-plugin");
在插件配置中使用
new CopyPlugin({
插件配置 from从某文件夹复制,可以使用相对路径;to到某文件夹,尽量使用绝对路径,使用相对路径的时候是相对上面设置好的输出目录
patterns: [
{ "from": "./public/img", "to": path.join(__dirname, "./dist/img/") },
{ "from": "./public/css", "to": path.join(__dirname, "./dist/css/") },
{ "from": "./public/js", "to": path.join(__dirname, "./dist/js/") },
{ "from": "./public/fonts", "to": path.join(__dirname, "./dist/fonts/") }
]
}),

在这里插入图片描述

css文件可以在一个js中,通过js引入使用:

import "./css/a.css"

在这里插入图片描述

但是在打包的时候报错了,其实es6的模块化规范中,是可以通过js导入css的,所以我们需要在配置中,添加模块化的配置:

module: {
rules: [
//配置CSS文件的import引入和解析 - 必须先style-loader然后再css-loader,跟顺序有关
{ test: /\\.css$/i,use: ["style-loader", "css-loader"] }
]
},

在这里插入图片描述

这个配置中,依赖两个插件:

npm i style-loader css-loader -D

为了方便访问我们打包以后的目标文件,所以webpack提供了一个服务器:

npm i webpack-dev-server@3.11.2 -D

导入并使用:

devServer:{
// 配置服务器根目录
contentBase: path.join(__dirname, "./dist"),
port:9527 // 配置端口号 - 可选项
}

在这里插入图片描述

要启动服务器需要在package.json中配置命令:⭐

"dev":"webpack-dev-server"

在这里插入图片描述

执行:

npm run dev

服务器启动成功:
在这里插入图片描述

就能默认打包并刷新浏览器了。

注意:如果修改了配置文件就需要重新执行webpack命令,如果修改静态资源文件,就不需要重新执行,服务器会自动重新打包

在这个服务器中,可以配置代理:

proxy:{
"/api":{
target:"http://localhost:3000"
}
}

代理可以配置多个。

⭐⭐⭐参考手册:https://webpack.docschina.org/configuration/dev-server/#devserverproxy



你以为这就结束了嘛?

在这里插入图片描述

其实是博主肝不动了,更多详情待更吧…



CSDN技术交流群: 不限萌新大佬,欢迎加入我们的技术圈。

在这里插入图片描述

微信交流群:

在这里插入图片描述

觉得博主总结的不错的,可以收藏支持一波~

在这里插入图片描述






推荐阅读
  • 从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南
    从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • Java服务问题快速定位与解决策略全面指南 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 本项目在Java Maven框架下,利用POI库实现了Excel数据的高效导入与导出功能。通过优化数据处理流程,提升了数据操作的性能和稳定性。项目已发布至GitHub,当前最新版本为0.0.5。该项目不仅适用于小型应用,也可扩展用于大型企业级系统,提供了灵活的数据管理解决方案。GitHub地址:https://github.com/83945105/holygrail,Maven坐标:`com.github.83945105:holygrail:0.0.5`。 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 在IntelliJ IDEA中初始化Git并将项目推送到远程仓库的具体步骤包括:首先,登录Gitee(码云)账号并创建新的仓库;接着,在IDEA中通过VCS菜单选择Git进行本地项目的初始化;最后,配置远程仓库地址并执行推送操作,确保项目代码安全上传至云端。 ... [详细]
  • 在 VSCode 中高效进行代码调试的关键在于正确配置 Node.js 环境。首先,需要设置 `launch.json` 文件中的 `program` 属性为项目的启动路径。通常情况下,这会指向 `package.json` 文件中的 `start` 脚本。通过这种方式,可以在启动调试时自动添加断点,从而更方便地进行代码调试。此外,合理利用 VSCode 的调试工具和功能,如条件断点、日志点和变量监视,可以进一步提升调试效率。 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • Git基础操作指南:掌握必备技能
    掌握 Git 基础操作是每个开发者必备的技能。本文详细介绍了 Git 的基本命令和使用方法,包括初始化仓库、配置用户信息、添加文件、提交更改以及查看版本历史等关键步骤。通过这些操作,读者可以快速上手并高效管理代码版本。例如,使用 `git config --global user.name` 和 `git config --global user.email` 来设置全局用户名和邮箱,确保每次提交时都能正确标识提交者信息。 ... [详细]
  • 我正在使用 Ruby on Rails 构建个人网站。总体而言,RoR 是一个非常出色的工具,它提供了丰富的功能和灵活性,使得创建自定义页面变得既高效又便捷。通过利用其强大的框架和模块化设计,我可以轻松实现复杂的功能,同时保持代码的整洁和可维护性。此外,Rails 的社区支持也非常强大,为开发过程中遇到的问题提供了丰富的资源和解决方案。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 在本教程中,我们将详细介绍如何使用 ArcGIS API 3.x for JavaScript 绘制风向流动图。如果您对所涉及的 API 类不熟悉,建议参考 Esri 官方网站上的 ArcGIS API 3.x for JavaScript 文档,其中提供了详尽的类介绍和使用说明。此外,我们还将提供完整的源代码,帮助您更好地理解和实现这一功能。 ... [详细]
author-avatar
LEEstarmmmmm
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有