diff --git a/cli/cli-jdl.spec.ts b/cli/cli-jdl.spec.ts index a4fe46a041ab..6ee4219d6bc7 100644 --- a/cli/cli-jdl.spec.ts +++ b/cli/cli-jdl.spec.ts @@ -12,7 +12,8 @@ describe('allows customizing JDL definitions', () => { await helpers .prepareTemporaryDir() .withFiles({ - '.blueprint/app/index.mjs': `export const command = { + '.blueprint/package.json': JSON.stringify({ type: 'module' }), + '.blueprint/app/index.js': `export const command = { configs: { fooConfig: { jdl: { diff --git a/cli/program.ts b/cli/program.ts index 8dfc951eddf4..5faee2bdd7ba 100644 --- a/cli/program.ts +++ b/cli/program.ts @@ -244,7 +244,7 @@ export const buildCommands = ({ return command; } catch (error) { try { - const { default: command } = await import(`./${key}.mjs`); + const { default: command } = await import(`./${key}.cjs`); return command; } catch { throw error; diff --git a/generators/angular/__snapshots__/generator.spec.ts.snap b/generators/angular/__snapshots__/generator.spec.ts.snap index 95ae74b991ed..223ab66fe294 100644 --- a/generators/angular/__snapshots__/generator.spec.ts.snap +++ b/generators/angular/__snapshots__/generator.spec.ts.snap @@ -20,7 +20,7 @@ exports[`generator - angular gateway-jwt-skipUserManagement(true)-withAdminUi(fa "clientRoot/angular.json": { "stateCleared": "modified", }, - "clientRoot/eslint.config.mjs": { + "clientRoot/eslint.config.js": { "stateCleared": "modified", }, "clientRoot/jest.conf.js": { @@ -759,7 +759,7 @@ exports[`generator - angular gateway-oauth2-withAdminUi(true)-skipJhipsterDepend "clientRoot/angular.json": { "stateCleared": "modified", }, - "clientRoot/eslint.config.mjs": { + "clientRoot/eslint.config.js": { "stateCleared": "modified", }, "clientRoot/jest.conf.js": { @@ -1725,7 +1725,7 @@ exports[`generator - angular microservice-jwt-skipUserManagement(false)-withAdmi "clientRoot/angular.json": { "stateCleared": "modified", }, - "clientRoot/eslint.config.mjs": { + "clientRoot/eslint.config.js": { "stateCleared": "modified", }, "clientRoot/jest.conf.js": { @@ -2448,7 +2448,7 @@ exports[`generator - angular microservice-oauth2-withAdminUi(true)-skipJhipsterD "angular.json": { "stateCleared": "modified", }, - "eslint.config.mjs": { + "eslint.config.js": { "stateCleared": "modified", }, "jest.conf.js": { @@ -3181,7 +3181,7 @@ exports[`generator - angular monolith-jwt-skipUserManagement(false)-withAdminUi( "angular.json": { "stateCleared": "modified", }, - "eslint.config.mjs": { + "eslint.config.js": { "stateCleared": "modified", }, "jest.conf.js": { @@ -4315,7 +4315,7 @@ exports[`generator - angular monolith-oauth2-withAdminUi(false)-skipJhipsterDepe "angular.json": { "stateCleared": "modified", }, - "eslint.config.mjs": { + "eslint.config.js": { "stateCleared": "modified", }, "jest.conf.js": { @@ -5024,7 +5024,7 @@ exports[`generator - angular monolith-session-skipUserManagement(true)-withAdmin "angular.json": { "stateCleared": "modified", }, - "eslint.config.mjs": { + "eslint.config.js": { "stateCleared": "modified", }, "jest.conf.js": { diff --git a/generators/angular/files-angular.ts b/generators/angular/files-angular.ts index 495bfb7abf1d..9e151a02b1a5 100644 --- a/generators/angular/files-angular.ts +++ b/generators/angular/files-angular.ts @@ -61,13 +61,13 @@ export const files = asWriteFilesSection({ condition: ctx => ctx.clientBundlerExperimentalEsbuild, templates: [ { sourceFile: 'angular.json.esbuild', destinationFile: 'angular.json' }, - 'proxy.config.mjs', - 'build-plugins/define-esbuild.mjs', + 'proxy.config.js', + 'build-plugins/define-esbuild.js', ], }), clientRootTemplatesBlock({ condition: ctx => ctx.clientBundlerExperimentalEsbuild && ctx.enableTranslation, - templates: ['build-plugins/i18n-esbuild.mjs'], + templates: ['build-plugins/i18n-esbuild.js'], }), clientSrcTemplatesBlock({ condition: ctx => ctx.clientBundlerExperimentalEsbuild && ctx.enableTranslation, diff --git a/generators/angular/generator.spec.ts b/generators/angular/generator.spec.ts index 5dbb4dde17c1..6e2032aadc07 100644 --- a/generators/angular/generator.spec.ts +++ b/generators/angular/generator.spec.ts @@ -114,6 +114,16 @@ describe(`generator - ${clientFramework}`, () => { runResult.assertNoFileContent(`${clientRootDir}package.json`, /VERSION_MANAGED_BY_CLIENT_VUE/); }); + it('should use ESM by default in package.json', () => { + runResult.assertFileContent(`${clientRootDir}package.json`, /"type": "module"/); + }); + + it('should not create files with .mjs extension', () => { + const generatedFiles = runResult.getStateSnapshot(); + const mjsFiles = Object.keys(generatedFiles).filter(file => file.endsWith('.mjs')); + expect(mjsFiles).toHaveLength(0); + }); + describe('withAdminUi', () => { const { applicationType, withAdminUi, clientRootDir = '' } = sampleConfig; const clientSrcDir = `${clientRootDir}${clientRootDir ? 'src/' : CLIENT_MAIN_SRC_DIR}`; diff --git a/generators/angular/generator.ts b/generators/angular/generator.ts index 80a24c813ffd..532b39d7bb5d 100644 --- a/generators/angular/generator.ts +++ b/generators/angular/generator.ts @@ -95,7 +95,7 @@ export default class AngularGenerator extends BaseApplicationGenerator< applicationDefauts({ application, applicationDefaults }) { applicationDefaults({ __override__: true, - eslintConfigFile: app => `eslint.config.${app.packageJsonType === 'module' ? 'js' : 'mjs'}`, + eslintConfigFile: _app => `eslint.config.js`, webappEnumerationsDir: app => `${app.clientSrcDir}app/entities/enumerations/`, angularLocaleId: app => app.nativeLanguageDefinition.angularLocale ?? defaultLanguage.angularLocale!, }); diff --git a/generators/angular/templates/angular.json.esbuild.ejs b/generators/angular/templates/angular.json.esbuild.ejs index bf2ffc50c44c..0aa4a23c02f5 100644 --- a/generators/angular/templates/angular.json.esbuild.ejs +++ b/generators/angular/templates/angular.json.esbuild.ejs @@ -40,9 +40,9 @@ "options": { "plugins": [ <%_ if (enableTranslation) { _%> - "build-plugins/i18n-esbuild.mjs", + "build-plugins/i18n-esbuild.js", <%_ } _%> - "build-plugins/define-esbuild.mjs" + "build-plugins/define-esbuild.js" ], "outputPath": { "base": "<%= this.relativeDir(clientRootDir, clientDistDir) %>", @@ -126,7 +126,7 @@ "options": { "buildTarget": "<%= dasherizedBaseName %>:build:development", "open": true, - "proxyConfig": "proxy.config.mjs", + "proxyConfig": "proxy.config.js", "port": <%= devServerPort %> }, "configurations": { diff --git a/generators/angular/templates/build-plugins/define-esbuild.mjs.ejs b/generators/angular/templates/build-plugins/define-esbuild.js.ejs similarity index 100% rename from generators/angular/templates/build-plugins/define-esbuild.mjs.ejs rename to generators/angular/templates/build-plugins/define-esbuild.js.ejs diff --git a/generators/angular/templates/build-plugins/i18n-esbuild.mjs.ejs b/generators/angular/templates/build-plugins/i18n-esbuild.js.ejs similarity index 100% rename from generators/angular/templates/build-plugins/i18n-esbuild.mjs.ejs rename to generators/angular/templates/build-plugins/i18n-esbuild.js.ejs diff --git a/generators/angular/templates/jest.conf.js.ejs b/generators/angular/templates/jest.conf.js.ejs index 00cc28b83065..ed9644c8e113 100644 --- a/generators/angular/templates/jest.conf.js.ejs +++ b/generators/angular/templates/jest.conf.js.ejs @@ -23,7 +23,7 @@ const { } = require('./tsconfig.json'); module.exports = { - transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$|dayjs/esm<% if (applicationTypeGateway && microfrontend) { %>|@angular-architects/module-federation-runtime<% } %>)'], + transformIgnorePatterns: ['node_modules/(?!.*\\.js$|dayjs/esm<% if (applicationTypeGateway && microfrontend) { %>|@angular-architects/module-federation-runtime<% } %>)'], resolver: 'jest-preset-angular/build/resolvers/ng-jest-resolver.js', globals: { __VERSION__: 'test', diff --git a/generators/angular/templates/package.json.ejs b/generators/angular/templates/package.json.ejs index e016a29352b9..fec88d0708cd 100644 --- a/generators/angular/templates/package.json.ejs +++ b/generators/angular/templates/package.json.ejs @@ -22,6 +22,7 @@ "version": "0.0.1-SNAPSHOT", "description": "<%= projectDescription %>", "private": true, + "type": "module", "license": "UNLICENSED", "cacheDirectories": [ "node_modules" diff --git a/generators/angular/templates/proxy.config.mjs.ejs b/generators/angular/templates/proxy.config.js.ejs similarity index 100% rename from generators/angular/templates/proxy.config.mjs.ejs rename to generators/angular/templates/proxy.config.js.ejs diff --git a/generators/app/__snapshots__/generator.spec.ts.snap b/generators/app/__snapshots__/generator.spec.ts.snap index 76e1d7180d6e..515248ce39c0 100644 --- a/generators/app/__snapshots__/generator.spec.ts.snap +++ b/generators/app/__snapshots__/generator.spec.ts.snap @@ -243,7 +243,7 @@ exports[`generator - app with default config should match snapshot 1`] = ` "camelizedBaseName": "jhipster", "capitalizedBaseName": "Jhipster", "caret": undefined, - "cjsExtension": ".js", + "cjsExtension": ".cjs", "cli": undefined, "cliName": undefined, "clientBundler": "webpack", @@ -467,7 +467,7 @@ exports[`generator - app with default config should match snapshot 1`] = ` "com.mycompany.myapp", ], "entitySuffix": "", - "eslintConfigFile": "eslint.config.mjs", + "eslintConfigFile": "eslint.config.js", "feignClient": false, "filterEntitiesAndPropertiesForClient": [Function], "filterEntitiesForClient": [Function], @@ -632,7 +632,7 @@ exports[`generator - app with default config should match snapshot 1`] = ` "messageBrokerPulsar": false, "microfrontend": false, "microfrontends": undefined, - "mjsExtension": ".mjs", + "mjsExtension": ".js", "monorepository": undefined, "nativeLanguage": "en", "nativeLanguageDefinition": { @@ -765,10 +765,7 @@ exports[`generator - app with default config should match snapshot 1`] = ` ], "packageJsonNodeEngine": undefined, "packageJsonScripts": {}, - "packageJsonType": "commonjs", - "packageJsonTypeAny": true, - "packageJsonTypeCommonjs": true, - "packageJsonTypeModule": false, + "packageJsonType": "module", "packageName": "com.mycompany.myapp", "pkType": undefined, "prettierExtensions": "md,json,yml,js,cjs,mjs,ts,cts,mts,java,html,css,scss", @@ -895,7 +892,7 @@ exports[`generator - app with gateway should match snapshot 1`] = ` "camelizedBaseName": "jhipster", "capitalizedBaseName": "Jhipster", "caret": undefined, - "cjsExtension": ".js", + "cjsExtension": ".cjs", "cli": undefined, "cliName": undefined, "clientBundler": "webpack", @@ -1121,7 +1118,7 @@ exports[`generator - app with gateway should match snapshot 1`] = ` "com.mycompany.myapp", ], "entitySuffix": "", - "eslintConfigFile": "eslint.config.mjs", + "eslintConfigFile": "eslint.config.js", "feignClient": false, "filterEntitiesAndPropertiesForClient": [Function], "filterEntitiesForClient": [Function], @@ -1280,7 +1277,7 @@ exports[`generator - app with gateway should match snapshot 1`] = ` "messageBrokerPulsar": false, "microfrontend": undefined, "microfrontends": undefined, - "mjsExtension": ".mjs", + "mjsExtension": ".js", "monorepository": undefined, "nativeLanguage": "en", "nativeLanguageDefinition": { @@ -1413,10 +1410,7 @@ exports[`generator - app with gateway should match snapshot 1`] = ` ], "packageJsonNodeEngine": undefined, "packageJsonScripts": {}, - "packageJsonType": "commonjs", - "packageJsonTypeAny": true, - "packageJsonTypeCommonjs": true, - "packageJsonTypeModule": false, + "packageJsonType": "module", "packageName": "com.mycompany.myapp", "pkType": undefined, "prettierExtensions": "md,json,yml,js,cjs,mjs,ts,cts,mts,java,html,css,scss", @@ -1541,7 +1535,7 @@ exports[`generator - app with microservice should match snapshot 1`] = ` "camelizedBaseName": "jhipster", "capitalizedBaseName": "Jhipster", "caret": undefined, - "cjsExtension": ".js", + "cjsExtension": ".cjs", "cli": undefined, "cliName": undefined, "clientBundler": undefined, @@ -1913,7 +1907,7 @@ exports[`generator - app with microservice should match snapshot 1`] = ` "messageBrokerPulsar": false, "microfrontend": false, "microfrontends": undefined, - "mjsExtension": ".mjs", + "mjsExtension": ".js", "monorepository": undefined, "nativeLanguage": "en", "nativeLanguageDefinition": { @@ -1985,10 +1979,7 @@ exports[`generator - app with microservice should match snapshot 1`] = ` ], "packageJsonNodeEngine": undefined, "packageJsonScripts": {}, - "packageJsonType": "commonjs", - "packageJsonTypeAny": true, - "packageJsonTypeCommonjs": true, - "packageJsonTypeModule": false, + "packageJsonType": "module", "packageName": "com.mycompany.myapp", "pkType": undefined, "prettierExtensions": "md,json,yml,js,cjs,mjs,ts,cts,mts,java", diff --git a/generators/base/blueprints.spec.ts b/generators/base/blueprints.spec.ts index 07963ad8695d..fad2b13d3a25 100644 --- a/generators/base/blueprints.spec.ts +++ b/generators/base/blueprints.spec.ts @@ -294,7 +294,10 @@ describe('generator - base - local blueprint', () => { before(async () => { await helpers .runJHipster(BLUEPRINT_NS, { useEnvironmentBuilder: true }) - .withFiles({ '.blueprint/app/index.mjs': BLUEPRINT_CONTENTS }) + .withFiles({ + '.blueprint/app/index.js': BLUEPRINT_CONTENTS, + '.blueprint/package.json': { type: 'module' }, + }) .commitFiles() .withJHipsterConfig(); }); @@ -302,7 +305,10 @@ describe('generator - base - local blueprint', () => { it('creates expected default files', () => { expect(runResult.getStateSnapshot()).toMatchInlineSnapshot(` { - ".blueprint/app/index.mjs": { + ".blueprint/app/index.js": { + "stateCleared": "modified", + }, + ".blueprint/package.json": { "stateCleared": "modified", }, ".yo-rc.json": { diff --git a/generators/ci-cd/__snapshots__/generator.spec.ts.snap b/generators/ci-cd/__snapshots__/generator.spec.ts.snap index 3453290d6ac6..5cfd3be14c7c 100644 --- a/generators/ci-cd/__snapshots__/generator.spec.ts.snap +++ b/generators/ci-cd/__snapshots__/generator.spec.ts.snap @@ -64,7 +64,7 @@ exports[`generator - ci-cd cli with multiples values should match context snapsh "ciCdIntegrationsSonar": false, "ciCdJenkins": true, "ciCdTravis": false, - "cjsExtension": ".js", + "cjsExtension": ".cjs", "cli": undefined, "cliName": undefined, "clientBundler": "webpack", @@ -230,7 +230,7 @@ exports[`generator - ci-cd cli with multiples values should match context snapsh "messageBrokerPulsar": false, "microfrontend": undefined, "microfrontends": undefined, - "mjsExtension": ".mjs", + "mjsExtension": ".js", "monorepository": undefined, "nativeLanguage": "en", "nativeLanguageDefinition": { @@ -302,10 +302,7 @@ exports[`generator - ci-cd cli with multiples values should match context snapsh ], "packageJsonNodeEngine": undefined, "packageJsonScripts": {}, - "packageJsonType": "commonjs", - "packageJsonTypeAny": true, - "packageJsonTypeCommonjs": true, - "packageJsonTypeModule": false, + "packageJsonType": "module", "packageName": "com.mycompany.myapp", "pkType": undefined, "prettierTabWidth": undefined, diff --git a/generators/client/generators/bootstrap/__snapshots__/generator.spec.ts.snap b/generators/client/generators/bootstrap/__snapshots__/generator.spec.ts.snap index 80a5f59dae65..b88c743744b1 100644 --- a/generators/client/generators/bootstrap/__snapshots__/generator.spec.ts.snap +++ b/generators/client/generators/bootstrap/__snapshots__/generator.spec.ts.snap @@ -40,7 +40,7 @@ exports[`generator - client:bootstrap bootstrapping default config should prepar "camelizedBaseName": "jhipster", "capitalizedBaseName": "Jhipster", "caret": undefined, - "cjsExtension": ".js", + "cjsExtension": ".cjs", "cli": undefined, "cliName": undefined, "clientBundler": "webpack", @@ -181,7 +181,7 @@ exports[`generator - client:bootstrap bootstrapping default config should prepar "messageBrokerPulsar": false, "microfrontend": false, "microfrontends": undefined, - "mjsExtension": ".mjs", + "mjsExtension": ".js", "monorepository": undefined, "nativeLanguage": "en", "nativeLanguageDefinition": Any, @@ -192,10 +192,7 @@ exports[`generator - client:bootstrap bootstrapping default config should prepar "packageFolder": undefined, "packageJsonNodeEngine": undefined, "packageJsonScripts": Any, - "packageJsonType": "commonjs", - "packageJsonTypeAny": true, - "packageJsonTypeCommonjs": true, - "packageJsonTypeModule": false, + "packageJsonType": "module", "packageName": "com.mycompany.myapp", "pkType": undefined, "prettierTabWidth": undefined, diff --git a/generators/common/__snapshots__/generator.spec.ts.snap b/generators/common/__snapshots__/generator.spec.ts.snap index 40c72fe29078..4ea9e9b3194d 100644 --- a/generators/common/__snapshots__/generator.spec.ts.snap +++ b/generators/common/__snapshots__/generator.spec.ts.snap @@ -153,6 +153,7 @@ This application was generated using JHipster JHIPSTER_VERSION, you can find doc "package.json": { "contents": "{ "private": true, + "type": "module", "dependencies": {}, "devDependencies": { "generator-jhipster": "JHIPSTER_VERSION", diff --git a/generators/common/generators/bootstrap/__snapshots__/generator.spec.ts.snap b/generators/common/generators/bootstrap/__snapshots__/generator.spec.ts.snap index 4e2c8580eb9a..cd68c0d95653 100644 --- a/generators/common/generators/bootstrap/__snapshots__/generator.spec.ts.snap +++ b/generators/common/generators/bootstrap/__snapshots__/generator.spec.ts.snap @@ -40,7 +40,7 @@ exports[`generator - common:bootstrap bootstrapping default config should prepar "camelizedBaseName": "jhipster", "capitalizedBaseName": "Jhipster", "caret": undefined, - "cjsExtension": ".js", + "cjsExtension": ".cjs", "cli": undefined, "cliName": undefined, "clientBundler": "webpack", @@ -174,7 +174,7 @@ exports[`generator - common:bootstrap bootstrapping default config should prepar "messageBrokerPulsar": false, "microfrontend": false, "microfrontends": undefined, - "mjsExtension": ".mjs", + "mjsExtension": ".js", "monorepository": undefined, "nativeLanguage": "en", "nativeLanguageDefinition": Any, @@ -185,10 +185,7 @@ exports[`generator - common:bootstrap bootstrapping default config should prepar "packageFolder": undefined, "packageJsonNodeEngine": undefined, "packageJsonScripts": Any, - "packageJsonType": "commonjs", - "packageJsonTypeAny": true, - "packageJsonTypeCommonjs": true, - "packageJsonTypeModule": false, + "packageJsonType": "module", "packageName": "com.mycompany.myapp", "pkType": undefined, "prettierTabWidth": undefined, diff --git a/generators/generate-blueprint/__snapshots__/generator.spec.ts.snap b/generators/generate-blueprint/__snapshots__/generator.spec.ts.snap index 3959fb0f8b8a..54cd6131ceec 100644 --- a/generators/generate-blueprint/__snapshots__/generator.spec.ts.snap +++ b/generators/generate-blueprint/__snapshots__/generator.spec.ts.snap @@ -2,16 +2,16 @@ exports[`generator - generate-blueprint with all option should match snapshot 1`] = ` { - ".blueprint/cli/commands.mjs": { + ".blueprint/cli/commands.js": { "stateCleared": "modified", }, - ".blueprint/generate-sample/command.mjs": { + ".blueprint/generate-sample/command.js": { "stateCleared": "modified", }, - ".blueprint/generate-sample/generator.mjs": { + ".blueprint/generate-sample/generator.js": { "stateCleared": "modified", }, - ".blueprint/generate-sample/index.mjs": { + ".blueprint/generate-sample/index.js": { "stateCleared": "modified", }, ".blueprint/generate-sample/templates/samples/sample.jdl": { @@ -871,16 +871,16 @@ exports[`generator - generate-blueprint with all option should match snapshot 1` exports[`generator - generate-blueprint with default config should write files and match snapshot 1`] = ` { - ".blueprint/cli/commands.mjs": { + ".blueprint/cli/commands.js": { "stateCleared": "modified", }, - ".blueprint/generate-sample/command.mjs": { + ".blueprint/generate-sample/command.js": { "stateCleared": "modified", }, - ".blueprint/generate-sample/generator.mjs": { + ".blueprint/generate-sample/generator.js": { "stateCleared": "modified", }, - ".blueprint/generate-sample/index.mjs": { + ".blueprint/generate-sample/index.js": { "stateCleared": "modified", }, ".blueprint/generate-sample/templates/samples/sample.jdl": { diff --git a/generators/generate-blueprint/files.ts b/generators/generate-blueprint/files.ts index 9c2bf7b87e22..290ebf5d6aaf 100644 --- a/generators/generate-blueprint/files.ts +++ b/generators/generate-blueprint/files.ts @@ -34,10 +34,10 @@ export const files = asWriteFilesSection({ 'tsconfig.json', 'vitest.config.ts', 'vitest.test-setup.ts', - '.blueprint/cli/commands.mjs', - '.blueprint/generate-sample/command.mjs', - '.blueprint/generate-sample/generator.mjs', - '.blueprint/generate-sample/index.mjs', + '.blueprint/cli/commands.js', + '.blueprint/generate-sample/command.js', + '.blueprint/generate-sample/generator.js', + '.blueprint/generate-sample/index.js', // Always write cli for devBlueprint usage 'cli/cli.cjs', { sourceFile: 'cli/cli-customizations.cjs', override: false }, @@ -46,10 +46,10 @@ export const files = asWriteFilesSection({ { condition: ctx => !ctx[LOCAL_BLUEPRINT_OPTION] && ctx.githubWorkflows, templates: [ - '.blueprint/github-build-matrix/command.mjs', - '.blueprint/github-build-matrix/generator.mjs', - '.blueprint/github-build-matrix/generator.spec.mjs', - '.blueprint/github-build-matrix/index.mjs', + '.blueprint/github-build-matrix/command.js', + '.blueprint/github-build-matrix/generator.js', + '.blueprint/github-build-matrix/generator.spec.js', + '.blueprint/github-build-matrix/index.js', ], }, { @@ -73,21 +73,21 @@ export const generatorFiles = asWriteFilesSection({ path: 'generators/generator', to: ctx => `${ctx.application.blueprintsPath}${ctx.generator.replaceAll(':', '/generators/')}`, templates: [ - { sourceFile: 'index.mjs', destinationFile: ctx => `index.${ctx.blueprintMjsExtension}` }, + { sourceFile: 'index.js', destinationFile: _ctx => `index.js` }, { - sourceFile: 'command.mjs', - destinationFile: ctx => `command.${ctx.blueprintMjsExtension}`, + sourceFile: 'command.js', + destinationFile: _ctx => `command.js`, override: data => !data.ignoreExistingGenerators, }, { - sourceFile: 'generator.mjs.jhi', - destinationFile: ctx => `generator.${ctx.blueprintMjsExtension}.jhi`, + sourceFile: 'generator.js.jhi', + destinationFile: _ctx => `generator.js.jhi`, override: data => !data.ignoreExistingGenerators, }, { condition: data => !data.generator.startsWith('entity') && !data.application[LOCAL_BLUEPRINT_OPTION], - sourceFile: 'generator.spec.mjs', - destinationFile: data => `generator.spec.${data.blueprintMjsExtension}`, + sourceFile: 'generator.spec.js', + destinationFile: _data => `generator.spec.js`, override: data => !data.ignoreExistingGenerators, }, ], diff --git a/generators/generate-blueprint/generator.spec.ts b/generators/generate-blueprint/generator.spec.ts index ed4ca1da608e..67b100573ecc 100644 --- a/generators/generate-blueprint/generator.spec.ts +++ b/generators/generate-blueprint/generator.spec.ts @@ -95,13 +95,13 @@ describe(`generator - ${generator}`, () => { it('should write java files with gradle build tool and match snapshot', () => { expect(runResult.getStateSnapshot()).toMatchInlineSnapshot(` { - ".blueprint/app/command.mjs": { + ".blueprint/app/command.js": { "stateCleared": "modified", }, - ".blueprint/app/generator.mjs": { + ".blueprint/app/generator.js": { "stateCleared": "modified", }, - ".blueprint/app/index.mjs": { + ".blueprint/app/index.js": { "stateCleared": "modified", }, ".blueprint/app/templates/template-file-app.ejs": { diff --git a/generators/generate-blueprint/generator.ts b/generators/generate-blueprint/generator.ts index f7b6b7528c6b..3ca6af116bf3 100644 --- a/generators/generate-blueprint/generator.ts +++ b/generators/generate-blueprint/generator.ts @@ -197,7 +197,7 @@ export default class extends BaseSimpleApplicationGenerator< prepare({ application }) { const { cli, cliName, baseName } = application; application.githubRepository = this.jhipsterConfig.githubRepository ?? `jhipster/generator-jhipster-${baseName}`; - application.blueprintMjsExtension = application.js ? 'js' : 'mjs'; + application.blueprintMjsExtension = 'js'; if (cli) { application.cliName = cliName ?? `jhipster-${baseName}`; } @@ -215,7 +215,7 @@ export default class extends BaseSimpleApplicationGenerator< await control.cleanupFiles({ '8.5.1': ['.eslintrc.json'], '8.7.2': ['.eslintignore', 'vitest.test-setup.ts'], - '8.7.4': ['.blueprint/generate-sample/get-samples.mjs', '.blueprint/github-build-matrix/build-matrix.mjs'], + '8.7.4': ['.blueprint/generate-sample/get-samples.js', '.blueprint/github-build-matrix/build-matrix.js'], }); }, async writing({ application }) { @@ -318,6 +318,7 @@ export default class extends BaseSimpleApplicationGenerator< ); this.packageJson.merge({ name: `generator-jhipster-${application.baseName}`, + type: 'module', keywords: ['yeoman-generator', 'jhipster-blueprint', BLUEPRINT_API_VERSION], files: defaultPublishedFiles, scripts: { diff --git a/generators/generate-blueprint/templates/.blueprint/cli/commands.mjs.ejs b/generators/generate-blueprint/templates/.blueprint/cli/commands.js.ejs similarity index 100% rename from generators/generate-blueprint/templates/.blueprint/cli/commands.mjs.ejs rename to generators/generate-blueprint/templates/.blueprint/cli/commands.js.ejs diff --git a/generators/generate-blueprint/templates/.blueprint/generate-sample/command.mjs.ejs b/generators/generate-blueprint/templates/.blueprint/generate-sample/command.js.ejs similarity index 100% rename from generators/generate-blueprint/templates/.blueprint/generate-sample/command.mjs.ejs rename to generators/generate-blueprint/templates/.blueprint/generate-sample/command.js.ejs diff --git a/generators/generate-blueprint/templates/.blueprint/generate-sample/generator.mjs.ejs b/generators/generate-blueprint/templates/.blueprint/generate-sample/generator.js.ejs similarity index 100% rename from generators/generate-blueprint/templates/.blueprint/generate-sample/generator.mjs.ejs rename to generators/generate-blueprint/templates/.blueprint/generate-sample/generator.js.ejs diff --git a/generators/generate-blueprint/templates/.blueprint/generate-sample/index.js.ejs b/generators/generate-blueprint/templates/.blueprint/generate-sample/index.js.ejs new file mode 100644 index 000000000000..3eccd6e8659c --- /dev/null +++ b/generators/generate-blueprint/templates/.blueprint/generate-sample/index.js.ejs @@ -0,0 +1,2 @@ +export { default } from './generator.js'; +export { default as command } from './command.js'; diff --git a/generators/generate-blueprint/templates/.blueprint/generate-sample/index.mjs.ejs b/generators/generate-blueprint/templates/.blueprint/generate-sample/index.mjs.ejs deleted file mode 100644 index 3dd0513e5a14..000000000000 --- a/generators/generate-blueprint/templates/.blueprint/generate-sample/index.mjs.ejs +++ /dev/null @@ -1,2 +0,0 @@ -export { default } from './generator.mjs'; -export { default as command } from './command.mjs'; diff --git a/generators/generate-blueprint/templates/.blueprint/github-build-matrix/command.mjs.ejs b/generators/generate-blueprint/templates/.blueprint/github-build-matrix/command.js.ejs similarity index 100% rename from generators/generate-blueprint/templates/.blueprint/github-build-matrix/command.mjs.ejs rename to generators/generate-blueprint/templates/.blueprint/github-build-matrix/command.js.ejs diff --git a/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.mjs.ejs b/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.js.ejs similarity index 100% rename from generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.mjs.ejs rename to generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.js.ejs diff --git a/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.spec.mjs.ejs b/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.spec.js.ejs similarity index 87% rename from generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.spec.mjs.ejs rename to generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.spec.js.ejs index b3e4c15dc21f..1b9981d10922 100644 --- a/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.spec.mjs.ejs +++ b/generators/generate-blueprint/templates/.blueprint/github-build-matrix/generator.spec.js.ejs @@ -13,7 +13,7 @@ describe(`generator - ${generator}`, async () => { for (const workflow of groups.map(sample => sample.split('.')[0])) { describe(`with ${workflow}`, () => { beforeAll(async () => { - await helpers.runJHipster(join(__dirname, 'index.mjs'), { useEnvironmentBuilder: true }).withArguments(workflow); + await helpers.runJHipster(join(__dirname, 'index.js'), { useEnvironmentBuilder: true }).withArguments(workflow); }); it('should match matrix value', () => { diff --git a/generators/generate-blueprint/templates/.blueprint/github-build-matrix/index.js.ejs b/generators/generate-blueprint/templates/.blueprint/github-build-matrix/index.js.ejs new file mode 100644 index 000000000000..3eccd6e8659c --- /dev/null +++ b/generators/generate-blueprint/templates/.blueprint/github-build-matrix/index.js.ejs @@ -0,0 +1,2 @@ +export { default } from './generator.js'; +export { default as command } from './command.js'; diff --git a/generators/generate-blueprint/templates/.blueprint/github-build-matrix/index.mjs.ejs b/generators/generate-blueprint/templates/.blueprint/github-build-matrix/index.mjs.ejs deleted file mode 100644 index 3dd0513e5a14..000000000000 --- a/generators/generate-blueprint/templates/.blueprint/github-build-matrix/index.mjs.ejs +++ /dev/null @@ -1,2 +0,0 @@ -export { default } from './generator.mjs'; -export { default as command } from './command.mjs'; diff --git a/generators/generate-blueprint/templates/generators/generator/command.mjs.ejs b/generators/generate-blueprint/templates/generators/generator/command.js.ejs similarity index 100% rename from generators/generate-blueprint/templates/generators/generator/command.mjs.ejs rename to generators/generate-blueprint/templates/generators/generator/command.js.ejs diff --git a/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs b/generators/generate-blueprint/templates/generators/generator/generator.js.jhi.ejs similarity index 98% rename from generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs rename to generators/generate-blueprint/templates/generators/generator/generator.js.jhi.ejs index 3129162a5e6b..16526304d3ad 100644 --- a/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs +++ b/generators/generate-blueprint/templates/generators/generator/generator.js.jhi.ejs @@ -28,7 +28,7 @@ import <%= generatorClass %>Generator from 'generator-jhipster/generators/<%= jhipsterGenerator %>'; <%_ } _%> <%_ if (priorities.find(priority => priority.name === 'initializing')) { _%> -import command from './command.<%- blueprintMjsExtension %>'; +import command from './command.js'; <%_ } _%> <%_ if (application.dynamic) { _%> diff --git a/generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs b/generators/generate-blueprint/templates/generators/generator/generator.spec.js.ejs similarity index 100% rename from generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs rename to generators/generate-blueprint/templates/generators/generator/generator.spec.js.ejs diff --git a/generators/generate-blueprint/templates/generators/generator/index.mjs.ejs b/generators/generate-blueprint/templates/generators/generator/index.js.ejs similarity index 85% rename from generators/generate-blueprint/templates/generators/generator/index.mjs.ejs rename to generators/generate-blueprint/templates/generators/generator/index.js.ejs index 139141f0252d..bb3c8d3f3567 100644 --- a/generators/generate-blueprint/templates/generators/generator/index.mjs.ejs +++ b/generators/generate-blueprint/templates/generators/generator/index.js.ejs @@ -16,5 +16,5 @@ See the License for the specific language governing permissions and limitations under the License. -%> -export { <%- application.dynamic ? 'createGenerator' : 'default' %> } from './generator.<%- blueprintMjsExtension %>'; -export { default as command } from './command.<%- blueprintMjsExtension %>'; +export { <%- application.dynamic ? 'createGenerator' : 'default' %> } from './generator.js'; +export { default as command } from './command.js'; diff --git a/generators/java/generators/bootstrap/__snapshots__/generator.spec.ts.snap b/generators/java/generators/bootstrap/__snapshots__/generator.spec.ts.snap index f98fce4427b4..a9bbce7cf9aa 100644 --- a/generators/java/generators/bootstrap/__snapshots__/generator.spec.ts.snap +++ b/generators/java/generators/bootstrap/__snapshots__/generator.spec.ts.snap @@ -40,7 +40,7 @@ exports[`generator - java:bootstrap bootstrapping default config should prepare "camelizedBaseName": "jhipster", "capitalizedBaseName": "Jhipster", "caret": undefined, - "cjsExtension": ".js", + "cjsExtension": ".cjs", "cli": undefined, "cliName": undefined, "clientBundler": "webpack", @@ -193,7 +193,7 @@ exports[`generator - java:bootstrap bootstrapping default config should prepare "messageBrokerPulsar": false, "microfrontend": false, "microfrontends": undefined, - "mjsExtension": ".mjs", + "mjsExtension": ".js", "monorepository": undefined, "nativeLanguage": "en", "nativeLanguageDefinition": Any, @@ -208,10 +208,7 @@ exports[`generator - java:bootstrap bootstrapping default config should prepare "packageInfoJavadocs": Any, "packageJsonNodeEngine": undefined, "packageJsonScripts": Any, - "packageJsonType": "commonjs", - "packageJsonTypeAny": true, - "packageJsonTypeCommonjs": true, - "packageJsonTypeModule": false, + "packageJsonType": "module", "packageName": "com.mycompany.myapp", "pkType": undefined, "prettierTabWidth": undefined, diff --git a/generators/javascript/__snapshots__/generator.spec.ts.snap b/generators/javascript/__snapshots__/generator.spec.ts.snap index 8b1675503e9c..91d680111ba1 100644 --- a/generators/javascript/__snapshots__/generator.spec.ts.snap +++ b/generators/javascript/__snapshots__/generator.spec.ts.snap @@ -10,6 +10,7 @@ exports[`generator - javascript with defaults options should match files snapsho "package.json": { "contents": "{ "private": true, + "type": "module", "dependencies": {}, "devDependencies": {}, "engines": {}, diff --git a/generators/javascript/generator.spec.ts b/generators/javascript/generator.spec.ts index 99b42ec17440..6bccefafb712 100644 --- a/generators/javascript/generator.spec.ts +++ b/generators/javascript/generator.spec.ts @@ -55,5 +55,15 @@ describe(`generator - ${generator}`, () => { it('should compose with generators', () => { expect(result.getComposedGenerators()).toMatchInlineSnapshot(`[]`); }); + + it('should use ESM by default in package.json', () => { + result.assertFileContent('package.json', /"type": "module"/); + }); + + it('should not create any .mjs files', () => { + const files = result.getSnapshot(); + const mjsFiles = Object.keys(files).filter(filename => filename.endsWith('.mjs')); + expect(mjsFiles).toHaveLength(0); + }); }); }); diff --git a/generators/javascript/generator.ts b/generators/javascript/generator.ts index 75c3f2daa3c0..967ad976befb 100644 --- a/generators/javascript/generator.ts +++ b/generators/javascript/generator.ts @@ -66,14 +66,7 @@ export default class JavascriptGenerator extends JavascriptSimpleApplicationGene get postWriting() { return this.asPostWritingTaskGroup({ mergePackageJson({ application, source }) { - const { - packageJsonNodeEngine, - packageJsonType, - dasherizedBaseName, - projectDescription, - packageJsonScripts, - clientPackageJsonScripts, - } = application; + const { packageJsonNodeEngine, dasherizedBaseName, projectDescription, packageJsonScripts, clientPackageJsonScripts } = application; this.packageJson.merge({ scripts: packageJsonScripts! }); @@ -84,9 +77,7 @@ export default class JavascriptGenerator extends JavascriptSimpleApplicationGene license: 'UNLICENSED', }); - if (packageJsonType === 'module') { - this.packageJson.merge({ type: packageJsonType }); - } + this.packageJson.merge({ type: 'module' }); if (packageJsonNodeEngine) { const packageJsonEngines: any = this.packageJson.get('engines') ?? {}; diff --git a/generators/javascript/generators/bootstrap/__snapshots__/generator.spec.ts.snap b/generators/javascript/generators/bootstrap/__snapshots__/generator.spec.ts.snap index 4a2e8f855ecc..2525168aa314 100644 --- a/generators/javascript/generators/bootstrap/__snapshots__/generator.spec.ts.snap +++ b/generators/javascript/generators/bootstrap/__snapshots__/generator.spec.ts.snap @@ -34,7 +34,7 @@ exports[`generator - javascript:bootstrap bootstrapping default config should pr "camelizedBaseName": "jhipster", "capitalizedBaseName": "Jhipster", "caret": undefined, - "cjsExtension": ".js", + "cjsExtension": ".cjs", "cli": undefined, "cliName": undefined, "clientBundler": "webpack", @@ -154,7 +154,7 @@ exports[`generator - javascript:bootstrap bootstrapping default config should pr "messageBrokerPulsar": false, "microfrontend": false, "microfrontends": undefined, - "mjsExtension": ".mjs", + "mjsExtension": ".js", "monorepository": undefined, "nativeLanguage": "en", "nodeDependencies": Any, @@ -163,10 +163,7 @@ exports[`generator - javascript:bootstrap bootstrapping default config should pr "nodeVersion": "NODE_VERSION", "packageFolder": undefined, "packageJsonNodeEngine": undefined, - "packageJsonType": "commonjs", - "packageJsonTypeAny": true, - "packageJsonTypeCommonjs": true, - "packageJsonTypeModule": false, + "packageJsonType": "module", "packageName": "com.mycompany.myapp", "pkType": undefined, "prettierTabWidth": undefined, @@ -693,9 +690,9 @@ exports[`generator - javascript:bootstrap bootstrapping default config should pr ] `; -exports[`generator - javascript:bootstrap customVersion-commonjs should call source snapshot 1`] = `{}`; +exports[`generator - javascript:bootstrap customVersion-module should call source snapshot 1`] = `{}`; -exports[`generator - javascript:bootstrap customVersion-commonjs should match files snapshot 1`] = ` +exports[`generator - javascript:bootstrap customVersion-module should match files snapshot 1`] = ` { ".yo-rc.json": ObjectContaining { "contents": Any, @@ -713,9 +710,9 @@ exports[`generator - javascript:bootstrap packageJsonNodeEngine(false)-module sh } `; -exports[`generator - javascript:bootstrap packageJsonNodeEngine(true) should call source snapshot 1`] = `{}`; +exports[`generator - javascript:bootstrap packageJsonNodeEngine(true)-module should call source snapshot 1`] = `{}`; -exports[`generator - javascript:bootstrap packageJsonNodeEngine(true) should match files snapshot 1`] = ` +exports[`generator - javascript:bootstrap packageJsonNodeEngine(true)-module should match files snapshot 1`] = ` { ".yo-rc.json": ObjectContaining { "contents": Any, diff --git a/generators/javascript/generators/bootstrap/command.ts b/generators/javascript/generators/bootstrap/command.ts index b2465b3263e9..1d6e7b83e41a 100644 --- a/generators/javascript/generators/bootstrap/command.ts +++ b/generators/javascript/generators/bootstrap/command.ts @@ -33,8 +33,7 @@ const command = { type: String, hide: true, }, - choices: ['commonjs', 'module'], - default: 'commonjs', + default: 'module', scope: 'storage', }, }, diff --git a/generators/javascript/generators/bootstrap/generator.spec.ts b/generators/javascript/generators/bootstrap/generator.spec.ts index 8a0f28429239..b9ed812abc7e 100644 --- a/generators/javascript/generators/bootstrap/generator.spec.ts +++ b/generators/javascript/generators/bootstrap/generator.spec.ts @@ -37,7 +37,7 @@ describe(`generator - ${generator}`, () => { for (const [name, config] of Object.entries( extendMatrix(fromMatrix({ packageJsonNodeEngine: [true, false, 'customVersion'] }), { - packageJsonType: [undefined, 'commonjs', 'module'], + packageJsonType: ['module'], }), )) { describe(name, () => { diff --git a/generators/javascript/generators/bootstrap/generator.ts b/generators/javascript/generators/bootstrap/generator.ts index 28df4aa32ce7..390f9139ba13 100644 --- a/generators/javascript/generators/bootstrap/generator.ts +++ b/generators/javascript/generators/bootstrap/generator.ts @@ -38,11 +38,10 @@ export default class JavascriptBootstrapGenerator extends JavascriptSimpleApplic this.fetchFromInstalledJHipster('javascript', 'resources', 'package.json'), ); }, - jsExtensions({ applicationDefaults, application }) { + jsExtensions({ applicationDefaults, application: _application }) { applicationDefaults({ - cjsExtension: application.packageJsonTypeCommonjs ? '.js' : '.cjs', - mjsExtension: application.packageJsonTypeModule ? '.js' : '.mjs', - + cjsExtension: '.cjs', + mjsExtension: '.js', clientRootDir: '', clientSrcDir: ({ clientRootDir }) => `${clientRootDir}${clientRootDir ? 'src/' : CLIENT_MAIN_SRC_DIR}`, }); diff --git a/generators/javascript/generators/eslint/__snapshots__/generator.spec.ts.snap b/generators/javascript/generators/eslint/__snapshots__/generator.spec.ts.snap index 5a6190d766a3..b5dd564105f0 100644 --- a/generators/javascript/generators/eslint/__snapshots__/generator.spec.ts.snap +++ b/generators/javascript/generators/eslint/__snapshots__/generator.spec.ts.snap @@ -7,7 +7,7 @@ exports[`generator - javascript:eslint with defaults options should match files ".yo-rc.json": ObjectContaining { "contents": Any, }, - "eslint.config.mjs": { + "eslint.config.js": { "contents": "import globals from 'globals'; import prettier from 'eslint-plugin-prettier/recommended'; // jhipster-needle-eslint-add-import - JHipster will add additional import here diff --git a/generators/javascript/generators/eslint/generator.ts b/generators/javascript/generators/eslint/generator.ts index 419ec844ca85..a070f5c55f7a 100644 --- a/generators/javascript/generators/eslint/generator.ts +++ b/generators/javascript/generators/eslint/generator.ts @@ -48,7 +48,7 @@ export default class EslintGenerator extends JavascriptSimpleApplicationGenerato get preparing() { return this.asPreparingTaskGroup({ source({ application, source }) { - application.eslintConfigFile = `eslint.config.${application.packageJsonType === 'module' ? 'js' : 'mjs'}`; + application.eslintConfigFile = `eslint.config.js`; source.addEslintConfig = ({ import: importToAdd, config }) => this.editFile( application.eslintConfigFile!, diff --git a/generators/javascript/templates/package.json.ejs b/generators/javascript/templates/package.json.ejs index e222632892f0..a2a03d793ab8 100644 --- a/generators/javascript/templates/package.json.ejs +++ b/generators/javascript/templates/package.json.ejs @@ -18,6 +18,7 @@ -%> { "private": true, + "type": "module", "dependencies": {}, "devDependencies": {}, "engines": {}, diff --git a/generators/react/__snapshots__/generator.spec.ts.snap b/generators/react/__snapshots__/generator.spec.ts.snap index befe2b726d61..3e62e79060f8 100644 --- a/generators/react/__snapshots__/generator.spec.ts.snap +++ b/generators/react/__snapshots__/generator.spec.ts.snap @@ -17,7 +17,7 @@ exports[`generator - react gateway-jwt-skipUserManagement(true)-withAdminUi(fals ".yo-rc.json": { "stateCleared": "modified", }, - "clientRoot/eslint.config.mjs": { + "clientRoot/eslint.config.js": { "stateCleared": "modified", }, "clientRoot/jest.conf.js": { @@ -480,7 +480,7 @@ exports[`generator - react gateway-oauth2-withAdminUi(true)-skipJhipsterDependen ".yo-rc.json": { "stateCleared": "modified", }, - "clientRoot/eslint.config.mjs": { + "clientRoot/eslint.config.js": { "stateCleared": "modified", }, "clientRoot/jest.conf.js": { @@ -976,7 +976,7 @@ exports[`generator - react microservice-jwt-skipUserManagement(false)-withAdminU ".yo-rc.json": { "stateCleared": "modified", }, - "clientRoot/eslint.config.mjs": { + "clientRoot/eslint.config.js": { "stateCleared": "modified", }, "clientRoot/jest.conf.js": { @@ -1455,7 +1455,7 @@ exports[`generator - react microservice-oauth2-withAdminUi(true)-skipJhipsterDep ".yo-rc.json": { "stateCleared": "modified", }, - "eslint.config.mjs": { + "eslint.config.js": { "stateCleared": "modified", }, "jest.conf.js": { @@ -1949,7 +1949,7 @@ exports[`generator - react monolith-jwt-skipUserManagement(false)-withAdminUi(tr ".yo-rc.json": { "stateCleared": "modified", }, - "eslint.config.mjs": { + "eslint.config.js": { "stateCleared": "modified", }, "jest.conf.js": { @@ -2502,7 +2502,7 @@ exports[`generator - react monolith-oauth2-withAdminUi(false)-skipJhipsterDepend ".yo-rc.json": { "stateCleared": "modified", }, - "eslint.config.mjs": { + "eslint.config.js": { "stateCleared": "modified", }, "jest.conf.js": { @@ -2965,7 +2965,7 @@ exports[`generator - react monolith-session-skipUserManagement(true)-withAdminUi ".yo-rc.json": { "stateCleared": "modified", }, - "eslint.config.mjs": { + "eslint.config.js": { "stateCleared": "modified", }, "jest.conf.js": { diff --git a/generators/react/generator.spec.ts b/generators/react/generator.spec.ts index b6ee6e74df53..f335d6f77bab 100644 --- a/generators/react/generator.spec.ts +++ b/generators/react/generator.spec.ts @@ -78,6 +78,16 @@ describe(`generator - ${clientFramework}`, () => { runResult.assertNoFileContent(`${clientRootDir}package.json`, /VERSION_MANAGED_BY_CLIENT_VUE/); }); + it('should use ESM by default in package.json', () => { + runResult.assertFileContent(`${clientRootDir}package.json`, /"type": "module"/); + }); + + it('should not create files with .mjs extension', () => { + const generatedFiles = runResult.getStateSnapshot(); + const mjsFiles = Object.keys(generatedFiles).filter(file => file.endsWith('.mjs')); + expect(mjsFiles).toHaveLength(0); + }); + describe('withAdminUi', () => { const { applicationType, withAdminUi } = sampleConfig; const clientSrcDir = `${clientRootDir}${clientRootDir ? 'src/' : CLIENT_MAIN_SRC_DIR}`; diff --git a/generators/react/generator.ts b/generators/react/generator.ts index 2036c5fe2f75..e3a2d80647dc 100644 --- a/generators/react/generator.ts +++ b/generators/react/generator.ts @@ -96,7 +96,7 @@ export default class ReactGenerator extends ClientApplicationGenerator< applicationDefaults({ __override__: true, - eslintConfigFile: app => `eslint.config.${app.packageJsonType === 'module' ? 'js' : 'mjs'}`, + eslintConfigFile: _app => `eslint.config.js`, webappEnumerationsDir: app => `${app.clientSrcDir}app/shared/model/enumerations/`, }); }, diff --git a/generators/react/templates/package.json.ejs b/generators/react/templates/package.json.ejs index 6ab4df52aac0..1ac0f55ee365 100644 --- a/generators/react/templates/package.json.ejs +++ b/generators/react/templates/package.json.ejs @@ -21,6 +21,7 @@ "version": "0.0.1-SNAPSHOT", "description": "<%= projectDescription %>", "private": true, + "type": "module", "license": "UNLICENSED", "cacheDirectories": [ "node_modules" diff --git a/generators/server/generators/bootstrap/__snapshots__/generator.spec.ts.snap b/generators/server/generators/bootstrap/__snapshots__/generator.spec.ts.snap index 2e71ebebc923..f8b3b6ebf123 100644 --- a/generators/server/generators/bootstrap/__snapshots__/generator.spec.ts.snap +++ b/generators/server/generators/bootstrap/__snapshots__/generator.spec.ts.snap @@ -40,7 +40,7 @@ exports[`generator - server:bootstrap bootstrapping default config should prepar "camelizedBaseName": "jhipster", "capitalizedBaseName": "Jhipster", "caret": undefined, - "cjsExtension": ".js", + "cjsExtension": ".cjs", "cli": undefined, "cliName": undefined, "clientBundler": "webpack", @@ -184,7 +184,7 @@ exports[`generator - server:bootstrap bootstrapping default config should prepar "messageBrokerPulsar": false, "microfrontend": false, "microfrontends": undefined, - "mjsExtension": ".mjs", + "mjsExtension": ".js", "monorepository": undefined, "nativeLanguage": "en", "nativeLanguageDefinition": Any, @@ -196,10 +196,7 @@ exports[`generator - server:bootstrap bootstrapping default config should prepar "packageInfoJavadocs": Any, "packageJsonNodeEngine": undefined, "packageJsonScripts": Any, - "packageJsonType": "commonjs", - "packageJsonTypeAny": true, - "packageJsonTypeCommonjs": true, - "packageJsonTypeModule": false, + "packageJsonType": "module", "packageName": "com.mycompany.myapp", "pkType": undefined, "prettierTabWidth": undefined, diff --git a/generators/spring-boot/generators/bootstrap/__snapshots__/generator.spec.ts.snap b/generators/spring-boot/generators/bootstrap/__snapshots__/generator.spec.ts.snap index 94f07f31774a..8dfd81f253d3 100644 --- a/generators/spring-boot/generators/bootstrap/__snapshots__/generator.spec.ts.snap +++ b/generators/spring-boot/generators/bootstrap/__snapshots__/generator.spec.ts.snap @@ -40,7 +40,7 @@ exports[`generator - spring-boot:bootstrap bootstrapping default config should p "camelizedBaseName": "jhipster", "capitalizedBaseName": "Jhipster", "caret": undefined, - "cjsExtension": ".js", + "cjsExtension": ".cjs", "cli": undefined, "cliName": undefined, "clientBundler": "webpack", @@ -193,7 +193,7 @@ exports[`generator - spring-boot:bootstrap bootstrapping default config should p "messageBrokerPulsar": false, "microfrontend": false, "microfrontends": undefined, - "mjsExtension": ".mjs", + "mjsExtension": ".js", "monorepository": undefined, "nativeLanguage": "en", "nativeLanguageDefinition": Any, @@ -208,10 +208,7 @@ exports[`generator - spring-boot:bootstrap bootstrapping default config should p "packageInfoJavadocs": Any, "packageJsonNodeEngine": undefined, "packageJsonScripts": Any, - "packageJsonType": "commonjs", - "packageJsonTypeAny": true, - "packageJsonTypeCommonjs": true, - "packageJsonTypeModule": false, + "packageJsonType": "module", "packageName": "com.mycompany.myapp", "pkType": undefined, "prettierTabWidth": undefined, diff --git a/generators/spring-boot/templates/package.json.ejs b/generators/spring-boot/templates/package.json.ejs index 608aaf94a519..e0798b192e32 100644 --- a/generators/spring-boot/templates/package.json.ejs +++ b/generators/spring-boot/templates/package.json.ejs @@ -21,6 +21,7 @@ "version": "0.0.0", "description": "Description for <%= baseName %>", "private": true, + "type": "module", "license": "UNLICENSED", "cacheDirectories": [ "node_modules" diff --git a/generators/vue/__snapshots__/generator.spec.ts.snap b/generators/vue/__snapshots__/generator.spec.ts.snap index 7839f05e7b03..db6684eec223 100644 --- a/generators/vue/__snapshots__/generator.spec.ts.snap +++ b/generators/vue/__snapshots__/generator.spec.ts.snap @@ -20,7 +20,7 @@ exports[`generator - vue gateway-jwt-skipUserManagement(true)-withAdminUi(false) "clientRoot/.postcssrc.js": { "stateCleared": "modified", }, - "clientRoot/eslint.config.mjs": { + "clientRoot/eslint.config.js": { "stateCleared": "modified", }, "clientRoot/package.json": { @@ -531,7 +531,7 @@ exports[`generator - vue gateway-oauth2-withAdminUi(true)-skipJhipsterDependenci "clientRoot/.postcssrc.js": { "stateCleared": "modified", }, - "clientRoot/eslint.config.mjs": { + "clientRoot/eslint.config.js": { "stateCleared": "modified", }, "clientRoot/package.json": { @@ -1114,7 +1114,7 @@ exports[`generator - vue microservice-jwt-skipUserManagement(false)-withAdminUi( "clientRoot/.postcssrc.js": { "stateCleared": "modified", }, - "clientRoot/eslint.config.mjs": { + "clientRoot/eslint.config.js": { "stateCleared": "modified", }, "clientRoot/module-federation.config.cjs": { @@ -1660,7 +1660,7 @@ exports[`generator - vue microservice-oauth2-withAdminUi(true)-skipJhipsterDepen ".yo-rc.json": { "stateCleared": "modified", }, - "eslint.config.mjs": { + "eslint.config.js": { "stateCleared": "modified", }, "module-federation.config.cjs": { @@ -2205,7 +2205,7 @@ exports[`generator - vue monolith-jwt-skipUserManagement(false)-withAdminUi(true ".yo-rc.json": { "stateCleared": "modified", }, - "eslint.config.mjs": { + "eslint.config.js": { "stateCleared": "modified", }, "package.json": { @@ -2872,7 +2872,7 @@ exports[`generator - vue monolith-oauth2-withAdminUi(false)-skipJhipsterDependen ".yo-rc.json": { "stateCleared": "modified", }, - "eslint.config.mjs": { + "eslint.config.js": { "stateCleared": "modified", }, "package.json": { @@ -3359,7 +3359,7 @@ exports[`generator - vue monolith-session-skipUserManagement(true)-withAdminUi(f ".yo-rc.json": { "stateCleared": "modified", }, - "eslint.config.mjs": { + "eslint.config.js": { "stateCleared": "modified", }, "package.json": { diff --git a/generators/vue/generator.spec.ts b/generators/vue/generator.spec.ts index 0063ed790148..88a9a1408802 100644 --- a/generators/vue/generator.spec.ts +++ b/generators/vue/generator.spec.ts @@ -93,6 +93,16 @@ describe(`generator - ${clientFramework}`, () => { runResult.assertNoFileContent(`${clientRootDir}package.json`, /VERSION_MANAGED_BY_CLIENT_VUE/); }); + it('should use ESM by default in package.json', () => { + runResult.assertFileContent(`${clientRootDir}package.json`, /"type": "module"/); + }); + + it('should not create files with .mjs extension', () => { + const generatedFiles = runResult.getStateSnapshot(); + const mjsFiles = Object.keys(generatedFiles).filter(file => file.endsWith('.mjs')); + expect(mjsFiles).toHaveLength(0); + }); + describe('withAdminUi', () => { const { applicationType, withAdminUi } = sampleConfig; const clientSrcDir = `${clientRootDir}${clientRootDir ? 'src/' : CLIENT_MAIN_SRC_DIR}`; diff --git a/generators/vue/generator.ts b/generators/vue/generator.ts index 706b6963d091..6cd9000d6898 100644 --- a/generators/vue/generator.ts +++ b/generators/vue/generator.ts @@ -98,7 +98,7 @@ export default class VueGenerator extends ClientApplicationGenerator { applicationDefauts({ applicationDefaults }) { applicationDefaults({ __override__: true, - eslintConfigFile: app => `eslint.config.${app.packageJsonType === 'module' ? 'js' : 'mjs'}`, + eslintConfigFile: _app => `eslint.config.js`, clientWebappDir: app => `${app.clientSrcDir}app/`, webappEnumerationsDir: app => `${app.clientWebappDir}shared/model/enumerations/`, }); diff --git a/generators/vue/templates/package.json.ejs b/generators/vue/templates/package.json.ejs index 0376de1e58dc..38d44642a406 100644 --- a/generators/vue/templates/package.json.ejs +++ b/generators/vue/templates/package.json.ejs @@ -21,6 +21,7 @@ "version": "0.0.0", "description": "<%= projectDescription %>", "private": true, + "type": "module", "license": "UNLICENSED", "cacheDirectories": [ "node_modules" diff --git a/generators/vue/templates/vitest.config.mts.ejs b/generators/vue/templates/vitest.config.mts.ejs index 141ffb3aa73f..e9110c89959f 100644 --- a/generators/vue/templates/vitest.config.mts.ejs +++ b/generators/vue/templates/vitest.config.mts.ejs @@ -18,7 +18,7 @@ -%> import { fileURLToPath } from 'node:url' import { mergeConfig, defineConfig } from 'vitest/config'; -import viteConfig from './vite.config.mjs' +import viteConfig from './vite.config.js' export default mergeConfig( viteConfig,