diff --git a/packages/react/src/module-federation/ast-utils.spec.ts b/packages/react/src/module-federation/ast-utils.spec.ts index 0b79423575..470a3d7149 100644 --- a/packages/react/src/module-federation/ast-utils.spec.ts +++ b/packages/react/src/module-federation/ast-utils.spec.ts @@ -89,6 +89,41 @@ describe('addRemoteToConfig', () => { expect(result).toEqual(sourceCode); }); + + it('should not add comma if the existing array has a trailing comma', async () => { + const sourceCode = stripIndents` + module.exports = { + name: 'shell', + remotes: [ + 'app1', + 'app2', + ] + }; + `; + + const source = ts.createSourceFile( + '/module-federation.config.js', + sourceCode, + ts.ScriptTarget.Latest, + true + ); + + const result = applyChangesToString( + sourceCode, + addRemoteToConfig(source, 'new-app') + ); + + expect(result).toEqual(stripIndents` + module.exports = { + name: 'shell', + remotes: [ + 'app1', + 'app2', + 'new-app', + ] + }; + `); + }); }); describe('addRemoteDefinition', () => { diff --git a/packages/react/src/module-federation/ast-utils.ts b/packages/react/src/module-federation/ast-utils.ts index c00d475304..221d7e70cb 100644 --- a/packages/react/src/module-federation/ast-utils.ts +++ b/packages/react/src/module-federation/ast-utils.ts @@ -37,7 +37,7 @@ export function addRemoteToConfig( const lastElement = arrayExpression.elements[arrayExpression.elements.length - 1]; return [ - lastElement + lastElement && !arrayExpression.elements.hasTrailingComma ? { type: ChangeType.Insert, index: lastElement.end,