简单的webpack使用

Webpack简介


Webpack是一个打包模块化的 JavaScript 的工具, webpack里一切文件皆模块, 通过 Loader 转换成文件, 通过Plugin注入钩子, 最后输出有多个模块组合成的文件, webpack专注于构建模块化项目。

基本概念

- Entry:  入口, webpack 执行构建的第一步将从entry开始
- module: 模块, 在webpack里一切皆模块, 一个模块对应一个文件, webpack会从配置的entry开始递归找出所有依赖的模块。
- Chunk:  代码块, 一个Chrunk有多个模块组合而成,用于代码合并与分割.
- Loader: 模块转换器,用于将模块的原内容按照需求转换成新内容。
- Plugin: 扩展插件,在webpack构建流程中的特定时机会广播对应事件,插件可以监听这些事件的发生 ,在特定的时机做对应的事情.

流程概括

webpack的运行流程是 一 个串行的过程,从启动到结束会依次执行以下流程。

从配置文件和 Shell 语句中读取与合并参数,得出最终的参数
用上 一 步得到的参数初始 化 Comp iler 对象,加载所有配置的插件,通过执行对象的 run 方法开始执行编译
根据配置中的 entry 找出所有入口文件
从入口文件出发,调用所有配置的 Loader 对模块进行翻译,再找出 该模块依赖的模块,再递归本步骤直到所有入口依赖的文件都经过了本步骤的处理
在经过第 4 步使用 Loader 翻译完所有模块后, 得到了每个模块被翻译后的最终内容及它们之间的依赖关系
根据入口和模块之间的依赖关系,组装成 一 个个包含多个模块的 Chunk,再将每个 Chunk 转换成 一 个单独的文件加入输出列表中,这是可以修改输出内容的最后机会
在确定好输出内容后,根据配置确定输出的路径和文件名,将文件的内容写入文件系统中
4.编译模块
1.初始化参数
5.完成模块编译
3.确定入口
2.开始编译
6.输出资源
7.输出完成
end

我们把以上流程分为三大块

初始化启动构建,读取与合并配置参数,加载 Plugin ,实例化 Compiler
初始化参数从配置文件和 Shell 语句中读取与合并参数,得出最终的参数 .在这个过程 中还会 执行配置文件中的插件实例化语句 new Plugin()
实例化 Compiler用上 一步 得到的参数初始化 Compiler 实例, Compiler 负 责文件监听和启动编译 。在 Compiler实例中包含了完整的 Webpack 配置,全局只有 一 个 Compiler 实例
加载插件依次调用插件的 apply 方法,让插件可以监听后续的所有事件节 点.同 时向插件传入 compiler实例的引用,以方便插件通过 compiler 调用 Webpack 提供的 API
environment开始应用 Node.js 风格的文件系统到 compiler 对象,以方便后续的文件 寻找和读取
entry-option读取配置的 Entrys ,为每个 Entry 实例化 一 个对应的 EntryPlugin ,为 后面该 Entry 的递归解析工作做准备
after-plugins调用完所有内置的和配置的插件的 apply 方法
after-resolvers根据配置初始化 resolver, resolver 负责在文件系统中寻找指定路径的文件

编译从 Entry 发出,针对每个 Module 串行调用对应的 Loader 去翻译文件的内容,再找到该 Module 依赖的 Module ,递归地进行编译处理 。
run启动 一 次新的编译
watch-run和 run 类似,区别在于它是在监听模式下启动编译,在这个事件中可以获取是哪些文件发生了变化从而导致重新启动 一 次新的编译
compile该事件是为了告诉插件 一 次新的编译将要启动,同时会给插件带上 compiler 对象
compilation当 Webpack 以开发模式运行时,每当检测到文件的变化,便有 一 次新的 Compilation 被创建 。一 个 Compilation 对象包含了当前的模块资源、编译生成资源、变化的文件等 。 Compilation对象也提供了很多事件回调给插件进行扩展
make一 个新的 Compilation 创建 完毕,即将从 Entry 开始 读取文件,根据文件的类型和配置的 Loader对文件进行编译,编译完后再找出该文件依赖的文件,递归地编译和解析
after-compile一 次 Compilation 执行 完成
invalid当遇到文件不存在、文件编译错误等异常时会触发该事件,该事件不会导致 Webpack 退出

输出将编译后的 Module 组合成 Chunk ,将 Chunk 转换成文件,输出到文件系统中
should-emit所有需要输出的文件己经生成,询问插件有哪 些文件需要输出 , 有哪些不需要输出
emit确定好要输出哪些文件后,执行文件输出,可以在这里获取和修改输出的内容
after-emit文件输出完毕
done成功完成 一 次完整的编译和输出流程
faild如果在编译和输出的流程中遇到异常,导致 Webpack 退出, 就会直接跳转到本步骤,插件可以在本事件中获取具体的错误原因


如果只执行一次构建,则以上阶段将会按照顺序各执行一次, 但在开启监昕模式下构建如下图所示:

Created with Raphaël 2.2.0 初始化 编译 输出 yes
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Webpack是一个现代化的JavaScript模块打包工具。它能够将多个模块打包成单个文件,以便在浏览器中加载。以下是一个简单Webpack使用教程: 1. 安装Webpack:首先,你需要在你的项目中安装Webpack。你可以使用npm或yarn来安装Webpack。在命令行中运行以下命令来进行安装: ``` npm install webpack webpack-cli --save-dev ``` 2. 创建配置文件:在项目根目录下创建一个名为 `webpack.config.js` 的文件。在这个文件中,你可以配置Webpack的各种选项,例如入口文件、输出路径、加载器和插件等。 ```javascript const path = require('path'); module.exports = { entry: './src/index.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js' }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: 'babel-loader' }, // 添加其他加载器和规则 ] }, // 添加插件和其他配置 }; ``` 3. 创建入口文件:在项目中创建一个名为 `index.js` 的入口文件。这个文件是Webpack打包的起点。 4. 配置加载器:Webpack使用加载器来处理不同类型的文件。例如,Babel加载器可以将ES6语法转换为ES5语法,使其能够在旧版浏览器中运行。在上面的配置文件中,我们使用了 `babel-loader` 来处理JavaScript文件。 ``` npm install babel-loader @babel/core @babel/preset-env --save-dev ``` 然后,在配置文件中添加以下规则: ```javascript module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: 'babel-loader' }, // 添加其他加载器和规则 ] } ``` 5. 运行Webpack:在命令行中运行以下命令来打包你的项目: ``` npx webpack ``` 这将根据配置文件中的设置,将入口文件及其依赖打包成一个或多个文件,并将它们输出到指定的路径。 这只是一个简单Webpack使用教程,Webpack还有很多其他功能和配置选项。你可以参考Webpack的官方文档来了解更多详细信息和高级用法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值