Skip to content

Commit 8e2ba66

Browse files
authored
Merge pull request #747 from dfreeman/prevent-duplicate-babel-plugins
Avoid registering `babel-plugin-ember-template-compilation` repeatedly
2 parents 78a29d8 + 008b8d5 commit 8e2ba66

File tree

2 files changed

+39
-5
lines changed

2 files changed

+39
-5
lines changed

lib/utils.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,17 @@ const INLINE_PRECOMPILE_MODULES = Object.freeze({
2525
function isInlinePrecompileBabelPluginRegistered(plugins) {
2626
return plugins.some((plugin) => {
2727
if (Array.isArray(plugin)) {
28-
let [pluginPathOrInstance, options] = plugin;
29-
30-
return (
28+
let [pluginPathOrInstance, options, key] = plugin;
29+
let isHTMLBarsInlinePrecompile =
3130
pluginPathOrInstance === require.resolve('babel-plugin-htmlbars-inline-precompile') &&
3231
typeof options.modules === 'object' &&
33-
options.modules['ember-cli-htmlbars'] === 'hbs'
34-
);
32+
options.modules['ember-cli-htmlbars'] === 'hbs';
33+
34+
let isEmberTemplateCompilation =
35+
pluginPathOrInstance === require.resolve('babel-plugin-ember-template-compilation') &&
36+
key === 'ember-cli-htmlbars:inline-precompile';
37+
38+
return isHTMLBarsInlinePrecompile || isEmberTemplateCompilation;
3539
} else if (
3640
plugin !== null &&
3741
typeof plugin === 'object' &&

node-tests/utils_test.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,36 @@ describe('utils', function () {
166166
});
167167
});
168168

169+
describe('isInlinePrecompileBabelPluginRegistered', function () {
170+
it('is false when no plugins exist', function () {
171+
let plugins = [];
172+
173+
assert.strictEqual(utils.isInlinePrecompileBabelPluginRegistered(plugins), false);
174+
});
175+
176+
it('detects when the htmlbars-inline-precompile plugin exists', function () {
177+
let plugins = [
178+
utils.setup({}, { requiresModuleApiPolyfill: true, templateCompilerPath: '.' }),
179+
];
180+
181+
assert.strictEqual(utils.isInlinePrecompileBabelPluginRegistered(plugins), true);
182+
});
183+
184+
it('detects when the ember-template-compilation plugin exists', function () {
185+
let plugins = [
186+
utils.setup({}, { requiresModuleApiPolyfill: false, templateCompilerPath: '.' }),
187+
];
188+
189+
assert.strictEqual(utils.isInlinePrecompileBabelPluginRegistered(plugins), true);
190+
});
191+
192+
it('detects when the parallelized plugin exists', function () {
193+
let plugins = [utils.buildParalleizedBabelPlugin({}, {}, '', false, true)];
194+
195+
assert.strictEqual(utils.isInlinePrecompileBabelPluginRegistered(plugins), true);
196+
});
197+
});
198+
169199
describe('isColocatedBabelPluginRegistered', function () {
170200
it('is false when no plugins exist', function () {
171201
let plugins = [];

0 commit comments

Comments
 (0)