打包器如何融入脚本?

理解这个问题,类似于理解 plugin 的概念: 所谓的 plugin 其实就是一种在现有功能的基础上提供的扩展功能。 本质上是 在某一个时机(hooks)下,根据当前的状态(形参)执行特性的事情,并返回对应的结果(返回值)。 那么如果想要让编译器支持这样的 plugin ,那么就需要提供对应的 hooks 和插入方式。

以 webpack 为例:

js 复制代码
export default {
  plugins: [
    new HTMLWebpackPlugin()
  ]
}

那么此时,"webpack实例"就可以通过 plugins 这个数组,拿到所有的插件。其中每个插件都是一个具体的实例对象。

webpack 可以控制这些 plugin 实例,让他们在特定的实际下进行执行,传递 context 上下文参数(代表的应该是整个编译流程下的核心对象)。插件可以通过修改 context 中的某些属性来得到想要完成的目的。

以 HTMLWebpackPlugin 为例,他就可以在 context 中获取到 html 文本,对其进行修改。

相关推荐
gnip35 分钟前
js上下文
前端·javascript
中草药z36 分钟前
【Stream API】高效简化集合处理
java·前端·javascript·stream·parallelstream·并行流
不知名raver(学python版)1 小时前
npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR!
前端·npm·node.js
醉方休1 小时前
React中使用DDD(领域驱动设计)
前端·react.js·前端框架
excel1 小时前
📖 小说网站的预导航实战:link 预加载 + fetch + 前进后退全支持
前端
学习3人组1 小时前
React 样式隔离核心方法和最佳实践
前端·react.js·前端框架
世伟爱吗喽1 小时前
threejs入门学习日记
前端·javascript·three.js
朝阳5811 小时前
用 Rust + Actix-Web 打造“Hello, WebSocket!”——从握手到回声,只需 50 行代码
前端·websocket·rust
F2E_Zhangmo1 小时前
基于cornerstone3D的dicom影像浏览器 第五章 在Displayer四个角落显示信息
开发语言·前端·javascript