jQuery
这样的前端工具,再到目前的三大框架Vue、React、Angular
,开发方式也冲原来的js
的ES5
语法到ES六、七、八、九、10
,到Type Script
,包括编写CSS
的预处理器less、scss
等冲上文的发展史知道现阶段的Web
开发涌现了许多新的开发方式,好比:ES5
语法到ES六、七、八、九、10
,到Type Script
,包括编写CSS
的预处理器less
、scss
等,可是浏览器并不能识别less、sass、scss
等语言,为了兼容浏览器能识别开发者写出的代码就须要将浏览器不能识别的代码转换成浏览器可否识别的代码,webpack
做用就在此,因此 webpack
就是一个打包工具,它会分析你的项目结构,找到JavaScript
模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript
等),并将其打包为合适的格式以供浏览器使用。这里附上一个 webpack
官网的图片,从这张图片能够形象的说明 webpack
的做用 css
loader
和Plugin
能够参考该位置的API
)webpack
的核心概念,好比入口、出口、Loaders、Plugins
等等,可是这里并无一些对它们解析的详细API;webpack
详细的配置选项,均可以在这里查询到,更多的时候是做为查询手册;loaders,webpack
的核心之一,常见的loader
均可以在这里查询到用法,好比css-loader、babel-loader、less- loader
等等;plugins,webpack
的核心之一,常见的plugin
均可以在这里查询到用法,好比BannerPlugin、 CleanWebpackPlugin、MiniCssExtractPlugin
等等;Webpack
的运行是依赖Node环境的,因此咱们电脑上必须有Node
环境html
webpack
的安装须要安装两个东西,一个是webpack
、还一个是 webpack-cli
二者之间的关系是:前端
webpack
命令,会执行node_modules
下的.bin
目录下的webpack
webpack-cli
执行webpack
命令会报错webpack-cli
中代码执行时,才是真正利用webpack
进行编译和打包的过程;(使用第三方脚手架生成的项目是没有安装webpack-cli
的,他是利用相似本身的vue-service-cli的东西) webpack
命令打包流程以下: vue
默认状况下 webpack
打包是将 src
文件夹下的 index.js
文件做为入口的,因此当前目录没有 src
文件夹或者 src
文件夹下面没有一个 index.js
文件的话会直接报错。而后从入口开始,会生成一个依赖关系图,这个依赖关系图会包含应用程序中所需的全部模块(好比.js文件、css文件、图片、 字体等),而后遍历图结构,打包一个个模块(根据文件的不一样使用不一样的loader
来解析); 打包成功后会默认在跟目下下生成一个 dist
文件夹生成一个 main.js
文件,此时将 main.js
文件引入到 index.html
后那些经过浏览器不能识别的语法书写的代码就能正常执行了好比写一个简单的减价法运算经过 commonJS
的方案引入到 index.js
示例代码以下
运行结果:node
commonjs
中的 require
函数此时能够看一下打包后生成的 main.js
文件 发现文件中的代码被压缩丑化了,可是去除了
commonjs
语法将全部的关联文件中的代码都堆在一个文件中,可是仍是存在一些 const
关键字、箭头函数等(这些都是 es6
语法,如今比较新的浏览器支持这种语法,可是一些老大的浏览器仍是不支持),这里能够经过配置 webpack
使用babel
来进行转换和设置。webpack
知识点补充:es6
webpack
命令,此时使用的是全局的 webpack
,若是没有安装全局的 webpack
即便本地安装了局部的 webpack
也会报错找不到命令webpack
想使用本地的 webpack
打包此时应该使用的是 node_module
文件夹下的 .bin
文件夹下的 webpack
进行打包,因此可使用使用 ./node_modules/.bin/webpack
来调用本地的 webpack
webpack
以外还可使用 npx webpack
命令来使用 npx
会直接执行 node_modules
下的某一个命令package.json
添加一个脚本命令以下图 yarn build
,该命令会找到 package.json
里面的 scripts
里面所建立的 build
,而后就会执行里面的命令,而 package.json
中的命令会优先去找 node_modules
里面的命令,若是node_modules
没有对应的命令则会去找全局的在一般状况下,webpack
须要打包的项目是很是复杂的,而且咱们须要一系列的配置来知足要求,默认配置必然 是不能够的。咱们能够在根目录下建立一个webpack.config.js
文件,来做为webpack
的配置文件:默认 webpack
回到根目录下的 webpack.config.js
文件中读取配置,若是想更改文件名称能够经过 --config
来修改默认的配置文件名称以下图: web