Skip to content

Commit

Permalink
Avoid registering babel-plugin-ember-template-compilation repeatedly
Browse files Browse the repository at this point in the history
  • Loading branch information
dfreeman committed May 26, 2022
1 parent 78a29d8 commit 008b8d5
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 5 deletions.
14 changes: 9 additions & 5 deletions lib/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,17 @@ const INLINE_PRECOMPILE_MODULES = Object.freeze({
function isInlinePrecompileBabelPluginRegistered(plugins) {
return plugins.some((plugin) => {
if (Array.isArray(plugin)) {
let [pluginPathOrInstance, options] = plugin;

return (
let [pluginPathOrInstance, options, key] = plugin;
let isHTMLBarsInlinePrecompile =
pluginPathOrInstance === require.resolve('babel-plugin-htmlbars-inline-precompile') &&
typeof options.modules === 'object' &&
options.modules['ember-cli-htmlbars'] === 'hbs'
);
options.modules['ember-cli-htmlbars'] === 'hbs';

let isEmberTemplateCompilation =
pluginPathOrInstance === require.resolve('babel-plugin-ember-template-compilation') &&
key === 'ember-cli-htmlbars:inline-precompile';

return isHTMLBarsInlinePrecompile || isEmberTemplateCompilation;
} else if (
plugin !== null &&
typeof plugin === 'object' &&
Expand Down
30 changes: 30 additions & 0 deletions node-tests/utils_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,36 @@ describe('utils', function () {
});
});

describe('isInlinePrecompileBabelPluginRegistered', function () {
it('is false when no plugins exist', function () {
let plugins = [];

assert.strictEqual(utils.isInlinePrecompileBabelPluginRegistered(plugins), false);
});

it('detects when the htmlbars-inline-precompile plugin exists', function () {
let plugins = [
utils.setup({}, { requiresModuleApiPolyfill: true, templateCompilerPath: '.' }),
];

assert.strictEqual(utils.isInlinePrecompileBabelPluginRegistered(plugins), true);
});

it('detects when the ember-template-compilation plugin exists', function () {
let plugins = [
utils.setup({}, { requiresModuleApiPolyfill: false, templateCompilerPath: '.' }),
];

assert.strictEqual(utils.isInlinePrecompileBabelPluginRegistered(plugins), true);
});

it('detects when the parallelized plugin exists', function () {
let plugins = [utils.buildParalleizedBabelPlugin({}, {}, '', false, true)];

assert.strictEqual(utils.isInlinePrecompileBabelPluginRegistered(plugins), true);
});
});

describe('isColocatedBabelPluginRegistered', function () {
it('is false when no plugins exist', function () {
let plugins = [];
Expand Down

0 comments on commit 008b8d5

Please sign in to comment.