webpacks是一个非常非常的强大的一个工具,相应的这个东西的学习也是有一定的难度的,里边的东西非常的多,里面涉及到的
概念的话也是非常非常的多的。
这个东西既然非常重要,那么在我们前端到底处于怎样的一个地位呢?
有些人学习到这个阶段已经分不清楚了,到底什么是node,什么是npm/什么是webpack,所以我们有必要了解下前端开发的架构图
目前我们前端比较流行的三大框架,Vue/React/Angular/,国内用Angular的非常少,如果公司需要你会,那么可以研究下,如果不
是就没有必要把太多的精力放到、Angular上,本身这个东西的需求比较少,岗位也比较少,那么这个时候你花费更多时间学习
Angular是没有什么太大的回报的,但是不可否认Angular是一个非常优秀的框架,他里边的架构设计也是非常优秀的~后续聊,目
前我们国内用的最多的还是Vue和React我们目前的开发模式已经不是以前的那种模式,我先创建一个index.html,然后写标签写内容,下几个js文件,引入到项目里,在写对应的js,写css什么的现在的模式,假如你现在要开发一个旅游项目,先考虑用什么包管理工具,用npm还是用yarn,之后在确定给你的项目用到的打包工具webpack,然后在当前的架构下边确定用什么前端框架开发,比如Vue,React,Angular,在写具体的代码,有人说了,那我不会搭建这个架构怎么办,这个不需要担心,因为现在,你不管去开发Vue项目还是开发React这个项目,他们都有对应的脚手架来帮助你进行快速开发,所谓的脚手架,不管是Vue的还是React的他们呢都是基于Webpack的。

path模块是node的内置模块,通常用于对路径和文件进行处理,提供了很多好用的方法
我们知道在Mac OS、Linux和window上的路径时不一样的
那么如果我们在window上使用 \ 来作为分隔符开发了一个应用程序,要部署到Linux上面应该怎么办呢?
可移植操作系统接口(英语:Portable Operating System Interface,缩写为POSIX)
从路径中获取信息
路径的拼接:path.join
拼接绝对路径:path.resolve


事实上随着前端的快速发展,目前前端的开发已经变的越来越复杂了:
但是对于很多的前端开发者来说,并不需要思考这些问题,日常的开发中根本就没有面临这些问题:
工程化章节会去学习一些webpack的高级特性

我们先来看一下官方的解释:
webpack是一个静态的模块化打包工具,为现代的JavaScript应用程序;
Webpack官网的图片

JavaScript的打包:
Css的处理:
资源文件img、font:
HTML资源的处理:
处理vue项目的SFC文件.vue文件;
webpack的官方文档是https://webpack.js.org/
Webpack的运行是依赖Node环境的,所以我们电脑上必须有Node环境

webpack的安装目前分为两个:webpack、webpack-cli
注意:从webpack4版本开始,你要想安装webpack就必须要同时安装俩东西。这个webpack-cli在用的时候是我们在命令行中使用webpack,必须要用的一个东西,
这个东西的作用是他会识别我们的命令行,假如说你是通过代码的方式来使用webpack的,比如const webpack=require(“webpack”) ,webpack.compile(),编译某
个文件,如果我自己写代码打包,那就不需要webpack-cli,但是我们目前使用webpack都是在命令行输入命令webpack --entry,
为了识别这个命令,都是webpack-cli在做的,
那么它们是什么关系呢?

npm install webpack webpack-cli –g # 全局安装
npm install webpack webpack-cli –D # 局部安装
全局安装在那敲命令都能用
那一般来说,是局部安装多还是全局安装多一点
假如说你的电脑里边有仨项目,分别是Vue2的、Vue3的项目、React的项目,这个三个项目都需要进行打包,但是不可能他们依赖的webpack版本完全一样,大概率是不一样的。所以每个项目里边有自己webpack
前面我们直接执行webpack命令使用的是全局的webpack,如果希望使用局部的可以按照下面的步骤来操作。
第一步:创建package.json文件,用于管理项目的信息、库依赖等
npm init
第二步:安装局部的webpack
npm install webpack webpack-cli -D
第三步:使用局部的webpack
npx webpack
第四步:在package.json中创建scripts脚本,执行脚本打包即可

npm run build
我们可以通过webpack进行打包,之后运行打包之后的代码
生成一个dist文件夹,里面存放一个main.js的文件,就是我们打包之后的文件:
我们发现是可以正常进行打包的,但是有一个问题,webpack是如何确定我们的入口的呢?
当然,我们也可以通过配置来指定入口和出口
#改index.js生成的文件名
npx webpack --entry ./src/main.js --output-filename ./bundle.js
#改生成的dist目录名
npx webpack --entry ./src/main.js --output-filename ./bundle.js --output-path ./build
但是一般这个目录太长了,我们不会这么写的,都是配置一个配置文件
在通常情况下,webpack需要打包的项目是非常复杂的,并且我们需要一系列的配置来满足要求,默认配置必然是不可以的。
我们可以在根目录下创建一个webpack.config.js文件,来作为webpack的配置文件:

继续执行webpack命令,依然可以正常打包
npm run build
const path = require("path")
module.exports = {
entry: "./src/main.js",
output: {
filename: "bundle.js",
path: path.resolve(__dirname, "./build")
}
}
但是如果我们的配置文件并不是webpack.config.js的名字,而是其他的名字呢?
webpack --config wk.config.js
但是每次这样执行命令来对源码进行编译,会非常繁琐,所以我们可以在package.json中增加一个新的脚本:

之后我们执行 npm run build来打包即可。
内容回顾
webpack到底是如何对我们的项目进行打包的呢?

webpack处理文件的时候会生成一个依赖图关系图(图结构)互相依赖是图,往下依赖是树结构,webpack默认只是对js来进行打包,但是如果我们想要在我们
的程序里边也包括我的css,图片字体等别的一些资源,这个时候我们就需要通过不同的loader来进行解析。