热门标签 | 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技术交流群: 不限萌新大佬,欢迎加入我们的技术圈。

在这里插入图片描述

微信交流群:

在这里插入图片描述

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

在这里插入图片描述






推荐阅读
  • 本文探讨了前端包管理器的核心功能,包括注册机制、文件存储、上传下载、以及依赖分析等关键特性,并介绍了几种流行的前端包管理工具。 ... [详细]
  • Webpack中实现环境与代码的有效分离
    本文探讨了如何在Webpack中有效地区分开发与生产环境,并实现代码的合理分离,以提高项目的可维护性和加载性能。 ... [详细]
  • 在Python开发过程中,随着项目数量的增加,不同项目依赖于不同版本的库,容易引发依赖冲突。为了避免这些问题,并保持开发环境的整洁,可以使用Virtualenv和Virtualenvwrapper来创建和管理多个隔离的Python虚拟环境。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • 解决FCKeditor应用主题后上传问题及优化配置
    本文介绍了在Freetextbox收费后选择FCKeditor作为替代方案时遇到的上传问题及其解决方案。通过调整配置文件和调试工具,最终解决了上传失败的问题,并对相关配置进行了优化。 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 前端开发中的代码注释实践与规范
    本文探讨了前端开发过程中代码注释的重要性,不仅有助于个人清晰地回顾自己的编程思路,还能促进团队成员之间的有效沟通。文章将详细介绍HTML、CSS及JavaScript中的注释使用方法,并提出一套实用的注释规范。 ... [详细]
  • Node.js 入门指南(一)
    本文介绍了Node.js的安装步骤、如何创建第一个应用程序、NPM的基本使用以及处理回调函数的方法。通过实际操作示例,帮助初学者快速掌握Node.js的基础知识。 ... [详细]
  • 本文详细探讨了Xshell6评估版到期后无法使用的常见问题,并提供了有效的解决方案,包括如何合法购买授权以继续使用。 ... [详细]
  • 利用 Jest 和 Supertest 实现接口测试的全面指南
    本文深入探讨了如何使用 Jest 和 Supertest 进行接口测试,通过实际案例详细解析了测试环境的搭建、测试用例的编写以及异步测试的处理方法。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
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社区 版权所有