From d73d1008efddf286228cb7b8a79deb410593a644 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Mon, 13 May 2019 06:38:14 +0200 Subject: [PATCH] Add "isEntry" to "getModuleInfo" --- docs/05-plugins.md | 1 + src/rollup/types.d.ts | 1 + src/utils/pluginDriver.ts | 11 +++++++---- .../samples/plugin-module-information/_config.js | 4 ++++ 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/05-plugins.md b/docs/05-plugins.md index 42bb2ff8107..80d43290036 100644 --- a/docs/05-plugins.md +++ b/docs/05-plugins.md @@ -360,6 +360,7 @@ Returns additional information about the module in question in the form ``` { id: string, // the id of the module, for convenience + isEntry: boolean, // is this a user- or plugin-defined entry point isExternal: boolean, // for external modules that are not included in the graph importedIds: string[], // the module ids imported by this module hasModuleSideEffects: boolean // are imports of this module included if nothing is imported from it diff --git a/src/rollup/types.d.ts b/src/rollup/types.d.ts index 70045292460..eec9479c6ab 100644 --- a/src/rollup/types.d.ts +++ b/src/rollup/types.d.ts @@ -125,6 +125,7 @@ export interface PluginContext extends MinimalPluginContext { hasModuleSideEffects: boolean; id: string; importedIds: string[]; + isEntry: boolean; isExternal: boolean; }; /** @deprecated Use `this.resolve` instead */ diff --git a/src/utils/pluginDriver.ts b/src/utils/pluginDriver.ts index 848386e8066..0101233a8df 100644 --- a/src/utils/pluginDriver.ts +++ b/src/utils/pluginDriver.ts @@ -1,5 +1,6 @@ import { EventEmitter } from 'events'; import { version as rollupVersion } from 'package.json'; +import ExternalModule from '../ExternalModule'; import Graph from '../Graph'; import Module from '../Module'; import { @@ -177,10 +178,12 @@ export function createPluginDriver( return { hasModuleSideEffects: foundModule.moduleSideEffects, id: foundModule.id, - importedIds: foundModule.isExternal - ? [] - : (foundModule as Module).sources.map(id => (foundModule as Module).resolvedIds[id].id), - isExternal: !!foundModule.isExternal + importedIds: + foundModule instanceof ExternalModule + ? [] + : foundModule.sources.map(id => foundModule.resolvedIds[id].id), + isEntry: foundModule instanceof Module && foundModule.isEntryPoint, + isExternal: foundModule instanceof ExternalModule }; }, meta: { diff --git a/test/function/samples/plugin-module-information/_config.js b/test/function/samples/plugin-module-information/_config.js index 9ba23d507c4..d0d85651590 100644 --- a/test/function/samples/plugin-module-information/_config.js +++ b/test/function/samples/plugin-module-information/_config.js @@ -21,24 +21,28 @@ module.exports = { hasModuleSideEffects: true, id: ID_MAIN, importedIds: [ID_FOO, ID_NESTED], + isEntry: true, isExternal: false }); assert.deepEqual(this.getModuleInfo(ID_FOO), { hasModuleSideEffects: true, id: ID_FOO, importedIds: [ID_PATH], + isEntry: false, isExternal: false }); assert.deepEqual(this.getModuleInfo(ID_NESTED), { hasModuleSideEffects: true, id: ID_NESTED, importedIds: [ID_FOO], + isEntry: false, isExternal: false }); assert.deepEqual(this.getModuleInfo(ID_PATH), { hasModuleSideEffects: true, id: ID_PATH, importedIds: [], + isEntry: false, isExternal: true }); }