All Projects → alienzhou → Webpack Internal Plugin Relation

alienzhou / Webpack Internal Plugin Relation

Licence: mit
🔎 a tiny tool to show the relation of webpack internal plugins & hooks

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Webpack Internal Plugin Relation

Frontie Webpack
Front-end Boilerplate | Gulp 4 + Webpack 4 + Babel + ITCSS Architecture + BEM Methodology + Twig.js
Stars: ✭ 102 (-24.44%)
Mutual labels:  webpack, webpack4
Webpack Seed
🚀 A Multi-Page Application base on webpack and babel. webpack搭建基于ES6,支持模板的多页面项目
Stars: ✭ 113 (-16.3%)
Mutual labels:  webpack, webpack4
Angular 7 Webpack 4 Boilerplate
Ready to use Angular 7 project with webpack 4 configuration for development and production
Stars: ✭ 102 (-24.44%)
Mutual labels:  webpack, webpack4
Fork Ts Checker Webpack Plugin
Webpack plugin that runs typescript type checker on a separate process.
Stars: ✭ 1,343 (+894.81%)
Mutual labels:  webpack, plugin
Webapp Webpack Plugin
[DEPRECATED] use favicons-webpack-plugin instead
Stars: ✭ 127 (-5.93%)
Mutual labels:  webpack, plugin
Webpack
Serve webpack assets properly from golang frameworks
Stars: ✭ 97 (-28.15%)
Mutual labels:  webpack, webpack4
Antdfront
using next generation data manager and hook、pure function component 、webpack to build antd design pro microfrontend project without umi, cra,dva or rematch
Stars: ✭ 105 (-22.22%)
Mutual labels:  webpack, hook
Multi Page App With React
🔧 A lightweight, flexible webpack setup with React for multi page application development
Stars: ✭ 82 (-39.26%)
Mutual labels:  webpack, webpack4
Awesome Webpack 4
A curated list of webpack 4 Resources
Stars: ✭ 126 (-6.67%)
Mutual labels:  webpack, webpack4
Sounds Webpack Plugin
🔊Notify or errors, warnings, etc with sounds
Stars: ✭ 125 (-7.41%)
Mutual labels:  webpack, plugin
Cypress Webpack Preprocessor
Cypress preprocessor for bundling JavaScript via webpack
Stars: ✭ 93 (-31.11%)
Mutual labels:  webpack, plugin
Webpack Demo
webpack 4 config. demo ⚙️
Stars: ✭ 131 (-2.96%)
Mutual labels:  webpack, webpack4
Egg Vue Webpack Boilerplate
Egg Vue Server Side Render (SSR) / Client Side Render (CSR)
Stars: ✭ 1,302 (+864.44%)
Mutual labels:  webpack, webpack4
Wordless
All the power of Pug, Sass, Coffeescript and WebPack in your WordPress theme. Stop writing themes like it's 1998.
Stars: ✭ 1,374 (+917.78%)
Mutual labels:  webpack, plugin
Award
⚙基于react的服务端渲染框架
Stars: ✭ 91 (-32.59%)
Mutual labels:  webpack, plugin
React Bootstrap Webpack Starter
ReactJS 16.4 + new React Context API +react Router 4 + webpack 4 + babel 7+ hot Reload + Bootstrap 4 + styled-components
Stars: ✭ 103 (-23.7%)
Mutual labels:  webpack, webpack4
Webpack4 Es6 React
A front-end project based on webpack4, react16, es6, antd and other technologies
Stars: ✭ 61 (-54.81%)
Mutual labels:  webpack, webpack4
Serverless Plugin Webpack
Serverless Plugin Webpack
Stars: ✭ 72 (-46.67%)
Mutual labels:  webpack, plugin
Knowledge
文档着重构建一个完整的「前端技术架构图谱」,方便 F2E(Front End Engineering又称FEE、F2E) 学习与进阶。
Stars: ✭ 1,620 (+1100%)
Mutual labels:  webpack, webpack4
Webpack Plugin Hash Output
Plugin to replace webpack chunkhash with an md5 hash of the final file conent.
Stars: ✭ 128 (-5.19%)
Mutual labels:  webpack, plugin

webpack-internal-plugin-relation

目前支持 webpack v4+

介绍

一个用来展示webpack内置插件调用关系(钩子)的小工具。

https://alienzhou.github.io/webpack-internal-plugin-relation

也许可以用来帮助理清webpack内部插件之间的关系,促进webpack源码结构的理解与阅读。

起因

  • webpack使用tapable的钩子虽然能有效解耦,但是类似事件监听这种模式,其注册与调用几乎完全无关,很难将一个钩子的创建 - 注册 - 调用有效联系起来。对此,往往只能使用关键词搜索。

  • webpack内部的钩子非常多,数量达到了180+。除了官网列出的compilercompilation中那些常用的钩子,还存在着众多其他可以使用的钩子。有些挺有用的钩子你可能都无从知晓。

  • webpack v4+ 本身内置了许多插件,即使非插件,webpack的模块也经常使用tapable钩子来交互。甚至你可以认为,webpack项目中的各个模块都是“插件化”的。这也使得模块间的调用与方法的触发关系更加不明确了。

这些主要导致了,想要全局细致了解webpack中模块(插件)、钩子之间的关系具有一定的困难。为了帮助理解与阅读webpack源码,我制作了一个工具应用,来进行可视化展示,并支持一些交互操作。

演示

关系展示:

点击交互,展示模块信息,跳转到相应源码位置:

筛选关系类型进行展示:

功能

  • 收集webpack内部插件中钩子的创建、注册、调用关系,并生成原始数据
  • 力导向图可视化展示插件、钩子间关系
  • 支持力导向图节点的选择
  • 单击javascript module类节点,可在左下角展示详细信息
  • 双击javascript module类节点,可直接打开webpack对应源码查看
  • 双击节点间关系,可直接打开并定位源码具体行数,进行查看
  • ……

使用

你可以直接启动查看应用效果,或者只是生成所需的关系数据,或者构建应用并托管在自己的网站……

启动服务预览

# 拷贝代码库
git clone [email protected]:alienzhou/webpack-internal-plugin-relation.git
cd webpack-internal-plugin-relation

# 安装依赖
npm i

# 启动服务
npm start

启动完成后可以在 127.0.0.1:8085 上看到服务

生成plugin与hook相关数据

如果不想使用力导向图功能,只是需要plugin、hook之间的关系数据,可以

npm run data

生成的数据在 config/ 目录下:

  • hook.json: plugin与hook收集的原始数据
  • forceData.json: 整理合并的力导向图数据

hook.json数据格式如下:

"lib/MultiCompiler.js": {
  "hooks": [
    {
      "name": "done",
      "line": 17
    },
    {
      "name": "invalid",
      "line": 18
    },
    {
      "name": "run",
      "line": 19
    },
    {
      "name": "watchClose",
      "line": 20
    },
    {
      "name": "watchRun",
      "line": 21
    }
  ],
  "taps": [
    {
      "hook": "done",
      "type": "tap",
      "plugin": "MultiCompiler",
      "line": 37
    },
    {
      "hook": "invalid",
      "type": "tap",
      "plugin": "MultiCompiler",
      "line": 48
    }
  ],
  "calls": [
    {
      "hook": "done",
      "type": "call",
      "line": 44
    }
  ]
}

应用构建

npm run build

生成的静态文件位于 dist/ 目录下,可将站点应用托管至任何静态文件服务器。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].