webpack

目标: webpack本身是, node的一个第三方模块包, 用于打包代码

现代 javascript 应用程序的 静态模块打包器 (module bundler)

把很多文件打包整合到一起, 缩小项目体积, 提高加载速度

其中功能: less/sass -> cssES6/7/8 -> ES5 处理js兼容支持js模块化处理css兼容性html/css/js -> 压缩合并

(wepack为了正常运行必须依赖node环境,而node环境为了可以正常的执行,必须使用npm工具管理node中各种依赖的包)

因此安装webpack首先要安装Node.js,Node.js自带了软件包管理工具npm

全局安装webpack

局部安装webpck--save-dev是开发时依赖,项目打包后不需要继续使用。

dist文件夹:用于存放之后打包的文件

src文件夹:用于存放我们写的源文件

main.js:项目的入口文件。

mathUtils.js:定义了一些数学工具函数,可以在其他地方引用,并且使用。

index.html: 浏览器打开展示的首页html(在这里引用的是src内最终打包的文件即dist文件夹的内容)。

package.json:通过npm init生成的,npm包管理的文件。

entry: 为打包的入口

output: 为打包的出口

将webpack命令映射npm run除了将webpack映射入口,出口之外,还可以将webpack命令映射为npm run 文件

webpack - 打包 js

配置

1.创建webpack配置文件 webpack.config.js

// 导入path模块

const path = require('path')

// webpack配置

module.exports = {

// 配置打包入口文件

entry: path.resolve(__dirname, 'src', 'index.js'),

// 配置打包输出位置,及文件名

output: {

path: path.resolve(__dirname, 'dist'),

// 输出文件名

filename: 'bundle.js'

}

}

2.配置webpack执行命令

webpack需要npm来调用才可以执行,在package.json中的script中进行配置

"script":{

"dev":"webpack --config webpack.config.js"

}

经过以上配置,在控制台运行 npm run dev 命令执行 webpack对 js 文件进行打包

development 开发模式

开发模式 :不会对打包生成的文件进行代码压缩和性能优化 打包速度快,适用于开发阶段使用

production 生产模式

生产模式: 会对打包生成的文件进行代码压缩和性能优化 打包速度很慢,仅适合在项目发布阶段使用不设置默认为production模式

在webpack.config.js中添加一个mode配置项

// 导入path模块

const path = require('path')

// webpack配置

module.exports = {

// ---------------- 打包模式

mode: 'development',

/* // 配置打包入口文件

entry: path.resolve(__dirname, 'src', 'index.js'),

// 配置打包输出位置,及文件名

output: {

path: path.resolve(__dirname, 'dist'),

// 输出文件名

filename: 'bundle.js'

*/

}

}

打包不同类型文件,要使用不同的loader,loader的作用:读取文件内容。对文件内容进行特定的处理。

npm i style-loader css-loader --save-dev下载 style-loader、css-loader

css-loader是将css代码从css文件中读取到内存中,而style-loader是将读取到的css代码设置到index.html文件的style标签内

// webpack配置

module.exports = {

// ...

// 扩展文件加载模块 - css模块加

module: {

// 由于可以加载多种文件,每种文件对应一种loader,所以是数组

rules: [

// 由于是多种文件,所以使用扩展名进行区分,再应用不同的loader

{

// 正则判断文件类型

test: /\.css$/i,

// 这种类型文件使用以下loader

use: ['style-loader', 'css-loader'],

}

]

}

}

npm i less-loader --save-dev下载 less-loader

webpack - 打包图片

在webpacke5.0中无需下载安装图片对应的loader(模块),因为内嵌了对象图片资源处理的模块,可以直接使用内置的资源模块进行处理(asset/modules) 内置了四种处理图片的资源模块

asset/resource

将图片文件单独打包成一个文件,保存到打包目录,再使用url(file:///d:/xxx/xxx) 就相当于将原图片,复制到了另个新的位置,改了名,url再指向新的位置即可。 之前是通过 file-loader 实现

asset/inline

将图片读取成base64格式,使用时通过url(data:image/png;base64,xxxxx)进行引用 之前是通过 url-loader 实现

asset/source

主要用于字体文件 通过 data:font/woff2;base64,xxxxxoxxox 之前是通过 raw-loader 实现

asset

在asset/resource 与 asset/inline之间自动选择,之前是通过url-loader,并配置资源体积限制实现。

webpack - 打包生产代码

当一个项目开发完毕后,要对项目的代码进行最终的打包,最终的打包,要以production模式进行。

可以修改webpack.config.js中的mode:'production'

// webpack配置

module.exports = {

// 打包模式

// 生产环境打包模式

mode: 'production',

}

(推荐)也可以在package.json的 script 中配置打包命令,通过--mode=production来指定

"build":{

"serve":"webpack --config webpack.config.js --mode=production"

}

打包命令

npm run build

相关推荐
学习使我快乐0119 分钟前
JS进阶 3——深入面向对象、原型
开发语言·前端·javascript
bobostudio199520 分钟前
TypeScript 设计模式之【策略模式】
前端·javascript·设计模式·typescript·策略模式
黄尚圈圈1 小时前
Vue 中引入 ECharts 的详细步骤与示例
前端·vue.js·echarts
浮华似水2 小时前
简洁之道 - React Hook Form
前端
正小安4 小时前
如何在微信小程序中实现分包加载和预下载
前端·微信小程序·小程序
_.Switch6 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
一路向前的月光6 小时前
Vue2中的监听和计算属性的区别
前端·javascript·vue.js
长路 ㅤ   6 小时前
vite学习教程06、vite.config.js配置
前端·vite配置·端口设置·本地开发
长路 ㅤ   6 小时前
vue-live2d看板娘集成方案设计使用教程
前端·javascript·vue.js·live2d
Fan_web6 小时前
jQuery——事件委托
开发语言·前端·javascript·css·jquery