Skip to content

Commit 071afa7

Browse files
committed
fix(plugins): filter rollup plugins
1 parent 889943f commit 071afa7

File tree

6 files changed

+27
-12
lines changed

6 files changed

+27
-12
lines changed

src/compiler/app-core/bundle-app-core.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export async function bundleApp(config: d.Config, compilerCtx: d.CompilerCtx, bu
4040
sourceMap: false,
4141
...config.commonjs
4242
}),
43-
...config.plugins,
43+
...config.rollupPlugins,
4444
pluginHelper(config, compilerCtx, buildCtx),
4545
config.sys.rollup.plugins.nodeResolve({
4646
mainFields: ['collection:main', 'jsnext:main', 'es2017', 'es2015', 'module', 'main'],

src/compiler/component-hydrate/bundle-hydrate-app.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export async function bundleHydrateApp(config: d.Config, compilerCtx: d.Compiler
3333
sourceMap: false,
3434
...config.commonjs
3535
}),
36-
...config.plugins,
36+
...config.rollupPlugins,
3737
pluginHelper(config, compilerCtx, buildCtx),
3838
config.sys.rollup.plugins.nodeResolve({
3939
mainFields: ['collection:main', 'jsnext:main', 'es2017', 'es2015', 'module', 'main'],

src/compiler/config/validate-plugins.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import * as d from '../../declarations';
22
import { setArrayConfig } from './config-utils';
33
import { buildWarn } from '@utils';
4+
import { Plugin } from 'rollup';
45

56

67
export function validatePlugins(config: d.Config, diagnostics: d.Diagnostic[]) {
78
setArrayConfig(config, 'plugins');
9+
const rollupPlugins = getRollupPlugins(config.plugins);
810
const hasResolveNode = config.plugins.some(p => p.name === 'node-resolve');
911
const hasCommonjs = config.plugins.some(p => p.name === 'commonjs');
1012
if (hasCommonjs) {
@@ -17,6 +19,19 @@ export function validatePlugins(config: d.Config, diagnostics: d.Diagnostic[]) {
1719
warn.messageText = `Stencil already uses "rollup-plugin-commonjs", please remove it from your "stencil.config.ts" plugins.
1820
You can configure the commonjs settings using the "commonjs" property in "stencil.config.ts`;
1921
}
20-
config.plugins = config.plugins.filter(({name}) => name !== 'node-resolve' && name !== 'commonjs');
22+
config.rollupPlugins = rollupPlugins.filter(({name}) => name !== 'node-resolve' && name !== 'commonjs');
23+
config.plugins = getPlugins(config.plugins);
24+
}
25+
26+
function getPlugins(plugins: any[]): Plugin[] {
27+
return plugins.filter(plugin => {
28+
return !!(plugin && typeof plugin === 'object');
29+
});
30+
}
31+
32+
function getRollupPlugins(plugins: any[]): Plugin[] {
33+
return plugins.filter(plugin => {
34+
return !!(plugin && typeof plugin === 'object' && !plugin.pluginType);
35+
});
2136
}
2237

src/compiler/plugin/test/plugin.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ describe('plugin', () => {
5050
};
5151
}
5252

53-
config.plugins = [myPlugin()];
53+
config.rollupPlugins = [myPlugin()];
5454

5555
const r = await compiler.build();
5656
expect(r.diagnostics).toHaveLength(0);
@@ -79,7 +79,7 @@ describe('plugin', () => {
7979
};
8080
}
8181

82-
config.plugins = [myPlugin()];
82+
config.rollupPlugins = [myPlugin()];
8383

8484
const r = await compiler.build();
8585
expect(r.diagnostics).toHaveLength(0);
@@ -120,7 +120,7 @@ describe('plugin', () => {
120120
};
121121
}
122122

123-
config.plugins = [myPlugin()];
123+
config.rollupPlugins = [myPlugin()];
124124

125125
const r = await compiler.build();
126126
expect(r.diagnostics).toHaveLength(0);
@@ -160,7 +160,7 @@ describe('plugin', () => {
160160
name: 'myPlugin'
161161
};
162162
}
163-
config.plugins = [myPlugin()];
163+
config.rollupPlugins = [myPlugin()];
164164

165165
const r = await compiler.build();
166166
expect(r.diagnostics).toHaveLength(0);

src/declarations/config.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ export interface StencilConfig {
105105
* By default, Stencil does not come with Sass or PostCss support.
106106
* However, either can be added using the plugin array.
107107
*/
108-
plugins?: d.Plugin[];
108+
plugins?: any[];
109109

110110
/**
111111
* The srcDir config specifies the directory which should contain the source typescript files
@@ -141,6 +141,7 @@ export interface StencilConfig {
141141
watch?: boolean;
142142
watchIgnoredRegex?: RegExp;
143143
writeLog?: boolean;
144+
rollupPlugins?: any[];
144145
}
145146

146147
export interface Config extends StencilConfig {

src/declarations/plugin.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,17 @@ import * as d from '.';
33

44
export interface Plugin {
55
name?: string;
6-
load?: (id: string, context?: PluginCtx) => Promise<string> | string;
7-
resolveId?: (importee: string, importer: string, context?: PluginCtx) => Promise<string> | string;
6+
pluginType?: string;
7+
load?: (id: string, context: PluginCtx) => Promise<string> | string;
8+
resolveId?: (importee: string, importer: string, context: PluginCtx) => Promise<string> | string;
89
transform?: (sourceText: string, id: string, context: PluginCtx) => Promise<PluginTransformResults> | PluginTransformResults | string;
910
}
1011

11-
1212
export interface PluginTransformResults {
1313
code?: string;
1414
id?: string;
1515
}
1616

17-
1817
export interface PluginCtx {
1918
config: d.Config;
2019
sys: d.StencilSystem;

0 commit comments

Comments
 (0)