From 0b0e67588ae2cdb1ecc7b4de6418b0e180b69ff1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Tue, 30 Apr 2024 17:12:11 +0200 Subject: [PATCH] fix: fix missing dependencies on main package --- rollup/rollup-metadata-plugin.ts | 11 +++++++++-- rollup/rollup.config.ts | 7 ++++--- rollup/rollup.default-extensions.ts | 4 ++-- rollup/rollup.rollup-plugins.config.ts | 4 ++-- rollup/rollup.types.config.ts | 2 +- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/rollup/rollup-metadata-plugin.ts b/rollup/rollup-metadata-plugin.ts index 33f5e1fc..644b29f9 100644 --- a/rollup/rollup-metadata-plugin.ts +++ b/rollup/rollup-metadata-plugin.ts @@ -21,7 +21,7 @@ interface GroupResult { interface Options { stage?: 'generateBundle' | 'writeBundle' getGroup?: (entryPoint: string, options: OutputOptions) => { name: string, publicName?: string, priority?: number } - handle (this: PluginContext, group: GroupResult, moduleGroupName: Map, options: OutputOptions, bundle: OutputBundle): void | Promise + handle (this: PluginContext, group: GroupResult, moduleGroupName: Map, otherDependencies: Set, options: OutputOptions, bundle: OutputBundle): void | Promise } export default ({ handle, getGroup = () => ({ name: 'main' }), stage = 'generateBundle' }: Options): Plugin => ({ @@ -129,8 +129,15 @@ export default ({ handle, getGroup = () => ({ name: 'main' }), stage = 'generate } }) + const otherDependencies = new Set(Array.from(moduleExternalDependencies.values()).map(set => Array.from(set)).flat()) + for (const group of groupResults) { + for (const directDependency of group.directDependencies) { + otherDependencies.delete(directDependency) + } + } + await Promise.all(groupResults.map(async (group) => { - await handle.call(this, group, moduleGroupName, options, bundle) + await handle.call(this, group, moduleGroupName, otherDependencies, options, bundle) })) } }) diff --git a/rollup/rollup.config.ts b/rollup/rollup.config.ts index 68057798..ff180442 100644 --- a/rollup/rollup.config.ts +++ b/rollup/rollup.config.ts @@ -713,9 +713,10 @@ export default (args: Record): rollup.RollupOptions[] => { priority: 1 } }, - async handle (group, moduleGroupName, options, bundle) { + async handle (group, moduleGroupName, otherDependencies, options, bundle) { if (group.name === 'main') { // Generate package.json + const dependencies = new Set([...group.directDependencies, ...otherDependencies]) const packageJson: PackageJson = { ...Object.fromEntries(Object.entries(pkg).filter(([key]) => ['name', 'description', 'version', 'keywords', 'author', 'license', 'repository', 'type'].includes(key))), private: false, @@ -802,8 +803,8 @@ export default (args: Record): rollup.RollupOptions[] => { } }, dependencies: { - ...Object.fromEntries(Object.entries(pkg.dependencies).filter(([key]) => group.directDependencies.has(key))), - ...Object.fromEntries(Array.from(group.directDependencies).filter(dep => dep.startsWith('@codingame/monaco-vscode-')).map(dep => [dep, pkg.version])) + ...Object.fromEntries(Object.entries(pkg.dependencies).filter(([key]) => dependencies.has(key))), + ...Object.fromEntries(Array.from(dependencies).filter(dep => dep.startsWith('@codingame/monaco-vscode-')).map(dep => [dep, pkg.version])) } } this.emitFile({ diff --git a/rollup/rollup.default-extensions.ts b/rollup/rollup.default-extensions.ts index 1f7aa1e8..0da926e6 100644 --- a/rollup/rollup.default-extensions.ts +++ b/rollup/rollup.default-extensions.ts @@ -89,7 +89,7 @@ export default rollup.defineConfig([ } }), metadataPlugin({ - handle ({ directDependencies }, moduleGroupName, options, bundle) { + handle ({ directDependencies }, moduleGroupName, otherDependencies, options, bundle) { const entrypoint = Object.values(bundle).filter(v => (v as rollup.OutputChunk).isEntry)[0]!.fileName const packageJson: PackageJson = { name: `@codingame/monaco-vscode-${name}-default-extension`, @@ -158,7 +158,7 @@ ${extensions.map(name => ` whenReady${pascalCase(name)}()`).join(',\n')} } }, metadataPlugin({ - handle ({ directDependencies }, moduleGroupName, options, bundle) { + handle ({ directDependencies }, moduleGroupName, otherDependencies, options, bundle) { const entrypoint = Object.values(bundle).filter(v => (v as rollup.OutputChunk).isEntry)[0]!.fileName const packageJson: PackageJson = { name, diff --git a/rollup/rollup.rollup-plugins.config.ts b/rollup/rollup.rollup-plugins.config.ts index 39fbedcd..a82cddcd 100644 --- a/rollup/rollup.rollup-plugins.config.ts +++ b/rollup/rollup.rollup-plugins.config.ts @@ -56,7 +56,7 @@ const config: rollup.RollupOptions[] = [{ preferConst: false }), metadataPlugin({ - handle (_, dependencies) { + handle ({ directDependencies }) { const packageJson: PackageJson = { name: `@codingame/monaco-vscode-${path.basename(output)}`, ...Object.fromEntries(Object.entries(pkg).filter(([key]) => ['version', 'keywords', 'author', 'license', 'repository', 'type'].includes(key))), @@ -67,7 +67,7 @@ const config: rollup.RollupOptions[] = [{ types: `${path.basename(output)}.d.ts`, dependencies: { vscode: `npm:${pkg.name}@^${pkg.version}`, - ...Object.fromEntries(Object.entries(pkg.dependencies).filter(([key]) => dependencies.has(key))) + ...Object.fromEntries(Object.entries(pkg.dependencies).filter(([key]) => directDependencies.has(key))) } } this.emitFile({ diff --git a/rollup/rollup.types.config.ts b/rollup/rollup.types.config.ts index b608f047..6a62ad16 100644 --- a/rollup/rollup.types.config.ts +++ b/rollup/rollup.types.config.ts @@ -122,7 +122,7 @@ export default rollup.defineConfig((<{input: Record, output: str priority: 1 } }, - async handle ({ name: groupName, exclusiveModules, entrypoints }, moduleGroupName, options, bundle) { + async handle ({ name: groupName, exclusiveModules, entrypoints }, moduleGroupName, otherDependencies, options, bundle) { if (groupName === 'main') { return }