Skip to content

Commit fa54ebc

Browse files
authored
feat: generate module relationship for build (#149)
1 parent 87be127 commit fa54ebc

File tree

3 files changed

+22
-13
lines changed

3 files changed

+22
-13
lines changed

src/node/build.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { Environment } from 'vite'
1+
import type { Rollup } from 'vite'
22
import type { ModuleTransformInfo } from '../types'
33
import type { InspectContext } from './context'
44
import fs from 'node:fs/promises'
@@ -70,7 +70,8 @@ export function createBuildGenerator(ctx: InspectContext) {
7070
),
7171
])
7272
},
73-
async generateForEnv(env: Environment) {
73+
async generateForEnv(pluginCtx: Rollup.PluginContext) {
74+
const env = pluginCtx.environment
7475
await Promise.all([...ctx._idToInstances.values()]
7576
.filter(v => v.environments.has(env.name))
7677
.map((v) => {
@@ -84,7 +85,7 @@ export function createBuildGenerator(ctx: InspectContext) {
8485
return await Promise.all([
8586
writeJSON(
8687
join(reportsDir, key, 'modules.json'),
87-
env.getModulesList(),
88+
env.getModulesList(pluginCtx),
8889
),
8990
writeJSON(
9091
join(reportsDir, key, 'metric-plugins.json'),

src/node/context.ts

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { Environment, ResolvedConfig } from 'vite'
1+
import type { Environment, ResolvedConfig, Rollup } from 'vite'
22
import type { Metadata, ModuleInfo, PluginMetricInfo, QueryEnv, ResolveIdInfo, ServerMetrics, TransformInfo } from '../types'
33
import type { ViteInspectOptions } from './options'
44
import { Buffer } from 'node:buffer'
@@ -158,16 +158,24 @@ export class InspectContextViteEnv {
158158
return id
159159
}
160160

161-
getModulesList() {
161+
getModulesList(pluginCtx: Rollup.PluginContext) {
162162
const moduleGraph = this.env.mode === 'dev' ? this.env.moduleGraph : undefined
163163

164-
const getDeps = (id: string) => Array.from(moduleGraph?.getModuleById(id)?.importedModules || [])
165-
.map(i => i.id || '')
166-
.filter(Boolean)
167-
168-
const getImporters = (id: string) => Array.from(moduleGraph?.getModuleById(id)?.importers || [])
169-
.map(i => i.id || '')
170-
.filter(Boolean)
164+
const getDeps = moduleGraph
165+
? (id: string) => Array.from(moduleGraph.getModuleById(id)?.importedModules || [])
166+
.map(i => i.id || '')
167+
.filter(Boolean)
168+
: pluginCtx
169+
? (id: string) => pluginCtx.getModuleInfo(id)?.importedIds || []
170+
: () => []
171+
172+
const getImporters = moduleGraph
173+
? (id: string) => Array.from(moduleGraph?.getModuleById(id)?.importers || [])
174+
.map(i => i.id || '')
175+
.filter(Boolean)
176+
: pluginCtx
177+
? (id: string) => pluginCtx.getModuleInfo(id)?.importers || []
178+
: () => []
171179

172180
function isVirtual(pluginName: string, transformName: string) {
173181
return pluginName !== DUMMY_LOAD_PLUGIN_NAME && transformName !== 'vite:load-fallback' && transformName !== 'vite:build-load-fallback'

src/node/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ export default function PluginInspect(options: ViteInspectOptions = {}): Plugin
220220
await buildGenerator.setupOutputDir()
221221
},
222222
async onEach(pluginCtx) {
223-
await buildGenerator.generateForEnv(pluginCtx.environment)
223+
await buildGenerator.generateForEnv(pluginCtx)
224224
},
225225
async onLast(pluginCtx) {
226226
const dir = buildGenerator.getOutputDir()

0 commit comments

Comments
 (0)