Skip to content

webpack

🕒 Published at:

命令解析

我们分析如上命令:

  1. cross-envcross-env是一个工具,允许您以跨平台的方式设置环境变量。在这种情况下,它将NODE_ENV环境变量设置为"development"。
  2. NODE_ENV=development:这将环境变量NODE_ENV设置为"development"。将NODE_ENV设置为"development"是Web开发中的常见做法,表示应用程序正在开发环境中运行。这可以影响应用程序中使用的各种工具和库的行为。
  3. webpack-dev-server:这是Webpack的开发服务器。它提供Webpack捆绑文件,并通常在开发过程中使用,以提供热重载和其他开发功能。
  4. --config src/common/config/webpack.config.dev.js:此标志指定Webpack用于开发构建的配置文件。在这种情况下,它指向src/common/config目录中的webpack.config.dev.js文件。该文件可能包含用于开发构建的配置设置。
  5. --progress:此标志表示应在控制台中显示构建进度。它提供有关构建过程的反馈。
  6. --watch:此标志指示Webpack监视源代码的更改,并在检测到更改时自动重新编译。这是开发服务器的常见做法,以监视代码更改并在需要时触发重新构建。
  7. --colors:此标志启用控制台中的带颜色输出。它通过使用颜色来区分输出的不同部分,有助于使构建日志更易阅读。
  8. --profile:此标志告诉Webpack生成并显示构建配置文件。构建配置文件可以帮助您了解构建过程中花费时间的地方,这对优化构建时间很有用。

自定义插件

webpack介绍

webpack运行过程

告诉webpack打包的起点 ===>入口文件

分析依赖关系图,根据顺序依次将资源引入形成代码块(chunk)

将代码块进行各项处理,比如将less解析成css ===>这一过程称为打包

将处理好的东西输出,输出的东西称为 bundle ==>打包生成静态资源

常用配置项

webpack五个核心概念

五个核心概念叫法作用
Entry入口打包时,第一个被访问的源码文件,指示 webpack 应该使用哪个模块(webpack中一切都是模块),来作为构建其内部依赖图的开始。 webpack可以通过入口,加载整个项目的依赖,默认是src/index.js
output出口打包后输出到哪个文件夹中,默认是dist/main.js
loader加载器将非js资源处理成webpack能识别的资源(js资源),loader执行是自下而上的,命名方式:xxx-loader
plugin插件执行更加强大的功能,比如压缩等
module模式指示webpack使用本地运行调试的环境(development)还是代码优化上线运行的环境(production)

什么是构建工具

如果想解析ts,less等,需要一个个小的工具,非常麻烦,于是前端提出了一种概念,把这些小的工具集成成一种大的工具,称之为构建工具,

webpack是一种构建工具,(静态模块打包器)

错误

unable to locate

路径错误

webpack使用流程

初始化 package.json

输入指令:

npm init

输入webpack包名,然后疯狂回车

下载并安装 webpack 和Jquery

输入指令:

本地安装的webpack-cli注意

1.新建各种文件

新建srcbuild文件夹

  • src ==> 项目的源代码目录
  • build ==>通过webpack打包处理后输出的目录

在src下新建index.js

  • index.js ==>入口起点文件

2.运行打包指令

开发环境指令:

代码解析:

webpack会以 src/js/index.js为入口文件开始打包,打包后会build/js目录下新建main.js,并将打包后的内容输出到main.js文件中

--mode指定整体打包环境为开发环境

功能:

webpack 能够编译打包 js 和 json 文件,并且能将 es6 的模块化语法转换成浏览器能识别的语法。

生产环境指令:

代码解析:

webpack会以 src/js/index.js为入口文件开始打包,打包后会build/js目录下新建main.js,并将打包后的内容输出到main.js文件中

--mode指定整体打包环境为生产环境

功能:

在开发配置功能上多一个功能,压缩代码。

终端输出结果需注意项:

hash: 打包后输出的结果,每次打包时都会生成一个唯一的hash值

结论

webpack 能够编译打包 js 和 json 文件。

能将 es6 的模块化语法转换成浏览器能识别的语法。

能压缩代码。

问题

不能编译打包 css、img 等文件。

不能将 js 的 es6 基本语法转化为 es5 以下语法。

3.创建配置文件

创建webpack配置文件

作用:指示webpack应该干什么

配置内容如下

运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

结论: 此时功能与上节一致

4.打包css

将css打包成js

1.将需要打包的样式文件引入到入口文件中(index.js)

2.下载安装 loader 包

3.在webpack配置文件中的loader配置模块中进行配置

4.运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

自定义配置文件名使用

npx webpack --config ./config/webpack.config.prod.js(自定义配置文件名)

将css打包成独立的文件

1.下载安装 plugin 包

2.在webpack.config.js配置文件中引入mini-css-extract-plugins模块

3.在webpack配置文件中的plugins配置模块中进行配置

4.在webpack配置文件中的loader配置模块中进行配置

5.运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

自定义配置文件名使用

npx webpack --config ./config/webpack.config.prod.js(自定义配置文件名)

5.打包HTML资源

1.下载安装 plugin 包

2.在webpack配置文件中引入html-webpack-plugins模块

3.在webpack配置文件中的plugins配置模块中进行配置

4.运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

自定义配置文件名使用

npx webpack --config ./config/webpack.config.prod.js(自定义配置文件名)

打包图片资源

打包以模块方式引入的图片

import dog from './image/01.jpg'

1.在webpack配置文件中的loader配置模块中进行配置

2.运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

自定义配置文件名使用

npx webpack --config ./config/webpack.config.prod.js(自定义配置文件名)

打包html中引入的图片

1.在webpack配置文件中的loader配置模块中进行配置

2.运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

自定义配置文件名使用

npx webpack --config ./config/webpack.config.prod.js(自定义配置文件名)

打包css中引入的图片

1.下载安装 plugin 包

2.在webpack.config.js配置文件中引入mini-css-extract-plugins模块

3.在webpack配置文件中的loader配置模块中进行配置

2.运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

自定义配置文件名使用

npx webpack --config ./config/webpack.config.prod.js(自定义配置文件名)

打包字体文件

1.在webpack配置文件中的loader配置模块中进行配置

2.运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

自定义配置文件名使用

npx webpack --config ./config/webpack.config.prod.js(自定义配置文件名)

打包公共资源

下载安装 plugin 包

作用就是将某文件或某文件夹下的文件复制到指定目录下

在webpack配置文件中的plugins配置模块中进行配置

运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

自定义配置文件名使用

npx webpack --config ./config/webpack.config.prod.js(自定义配置文件名)

每次打包前删除之前的打包文件

下载安装 plugin 包

引入

在webpack配置文件中的plugins配置模块中进行配置

运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

自定义配置文件名使用

npx webpack --config ./config/webpack.config.prod.js(自定义配置文件名)

7.打包除css|js|html|less之外的资源

1.下载安装 plugin 包

2.在webpack配置文件中引入path模块和html-webpack-plugin模块

3.在webpack配置文件中的loader配置模块中进行配置

4.运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

自定义配置文件名使用

npx webpack --config ./config/webpack.config.prod.js(自定义配置文件名)

打包ejs

下载loader包

在webpack配置文件的loader模块中配置

js 语法检查

1.下载安装包

  • eslint 检验js代码格式的工具
  • eslint-config-airbnb-base:最流行的js代码格式规范
  • eslint-webpack-plugin:webpack中使用eslint
  • eslint-plugin-import:用于在package.json中读取eslintConfig的配置

2.webpack配置文件中引入

2.在webpack配置文件中的plugins模块中进行配置

3.配置 package.json

4.运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

自定义配置文件名使用

npx webpack --config ./config/webpack.config.prod.js(自定义配置文件名)

js 兼容性处理

1.下载安装包

2.在webpack配置文件的loader模块中配置

  • @babel/preset-env只能转义基本语法(promise不能转换)

  • @babel/polyfill(转换所有js语法)

  • npm i @babel/polyfill -D

  • import '@babel/polyfill'(入口文件中引入)

运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

自定义配置文件名使用

npx webpack --config ./config/webpack.config.prod.js(自定义配置文件名)

webpack额外配置

配置默认识别的后缀和路径别名

在webpack配置文件中添加新的配置模块

自动编译

安装

在webpack配置文件中添加新的配置模块

运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

自定义配置文件名使用

npx webpack --config ./config/webpack.config.prod.js(自定义配置文件名)

压缩css

安装

引入

在webpack中添加新的配置模块

运行指令:

全局安装的webpack-cli使用webpack命令

本地安装的webpack-cli使用npx webpack命令

自定义配置文件名使用

npx webpack --config ./config/webpack.config.prod.js(自定义配置文件名)

配置入口和资源的最大文件大小,忽略性能提示

配置代理服务器

服务器向服务器发送请求不受同源策略限制

代理服务器代替用户访问目标服务器

在webpack或各种脚手架中配置代理