diff --git a/eslint.config.mjs b/eslint.config.mjs index 4cb8891..de28ba7 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -10,6 +10,7 @@ export default [ { files: [ 'files/*/app/**/*.js', + 'files-override/*/*.js', 'files-override/*/app/**/*.js', 'files-override/*/tests/**/*.js', ], diff --git a/files-override/js/ember-cli-build.js b/files-override/js/ember-cli-build.cjs similarity index 100% rename from files-override/js/ember-cli-build.js rename to files-override/js/ember-cli-build.cjs diff --git a/files-override/js/eslint.config.mjs b/files-override/js/eslint.config.mjs index 0d67eb3..8c0305f 100644 --- a/files-override/js/eslint.config.mjs +++ b/files-override/js/eslint.config.mjs @@ -70,16 +70,7 @@ export default [ * CJS node files */ { - files: [ - '**/*.cjs', - 'config/**/*.js', - 'testem.js', - 'testem*.js', - '.prettierrc.js', - '.stylelintrc.js', - '.template-lintrc.js', - 'ember-cli-build.js', - ], + files: ['**/*.cjs', 'config/**/*.js', 'testem.js', 'testem*.js'], plugins: { n, }, @@ -96,7 +87,7 @@ export default [ * ESM node files */ { - files: ['*.mjs'], + files: ['*.mjs', '*.js'], plugins: { n, }, diff --git a/files-override/js/testem.js b/files-override/js/testem.cjs similarity index 100% rename from files-override/js/testem.js rename to files-override/js/testem.cjs diff --git a/files-override/js/tests/index.html b/files-override/js/tests/index.html index f28b7c5..69e728d 100644 --- a/files-override/js/tests/index.html +++ b/files-override/js/tests/index.html @@ -24,7 +24,7 @@ - + diff --git a/files-override/shared/.template-lintrc.js b/files-override/shared/.template-lintrc.js new file mode 100644 index 0000000..589ce8f --- /dev/null +++ b/files-override/shared/.template-lintrc.js @@ -0,0 +1,3 @@ +export default { + extends: 'recommended', +}; diff --git a/files/js/app/config/environment.js b/files/js/app/config/environment.js index fad999a..2667965 100644 --- a/files/js/app/config/environment.js +++ b/files/js/app/config/environment.js @@ -1,3 +1,42 @@ -import loadConfigFromMeta from '@embroider/config-meta-loader'; +// import loadConfigFromMeta from '@embroider/config-meta-loader'; +// +// export default loadConfigFromMeta('<%= name %>'); -export default loadConfigFromMeta('<%= name %>'); +import { isTesting, isDevelopingApp } from '@embroider/macros'; + +const isTest = () => isTesting() || location.href.includes('/test'); + +export default { + modulePrefix: '<%= name %>', + environment: isTest() + ? 'test' + : isDevelopingApp() + ? 'development' + : 'production', // maybe, + rootURL: '/', + locationType: 'history', + EmberENV: { + EXTEND_PROTOTYPES: false, + FEATURES: { + // Here you can enable experimental features on an ember canary build + // e.g. EMBER_NATIVE_DECORATOR_SUPPORT: true + }, + }, + + ...(isTest() + ? { + locationType: 'none', + } + : {}), + + APP: { + ...(isTest() + ? { + LOG_ACTIVE_GENERATION: false, + LOG_VIEW_LOOKUPS: false, + rootElement: '#ember-testing', + autoboot: false, + } + : {}), + }, +}; diff --git a/index.js b/index.js index 2b8472f..99282ba 100644 --- a/index.js +++ b/index.js @@ -3,7 +3,7 @@ const fs = require('fs'); const { join } = require('path'); const emberCliUpdate = require('./lib/ember-cli-update'); const copyWithTemplate = require('./lib/copy-with-template'); -const { rm, readFile } = require('fs/promises'); +const { cp, rm, readFile } = require('fs/promises'); const appBlueprint = Blueprint.lookup('app'); @@ -53,6 +53,8 @@ module.exports = { 'save-dev': true, verbose: false, packages: [ + // Too many warnings + 'ember-data', // Not needed anymore 'ember-fetch', 'broccoli-asset-rev', @@ -104,12 +106,29 @@ module.exports = { '.eslintignore', // replaced with .prettierrc.cjs '.prettierrc.js', + // CJS (needs renamed) + 'testem.js', + 'ember-cli-build.js', ]; for (let file of filesToDelete) { await rm(join(options.target, file)); } + const filesToSetAsCJS = [ + 'config/environment.js', + 'config/targets.js', + '.stylelintrc.js', + ]; + + for (let file of filesToSetAsCJS) { + await cp( + join(options.target, file), + join(options.target, file.replace(/\.js$/, '.cjs')), + ); + await rm(join(options.target, file)); + } + // there doesn't seem to be a way to tell ember-cli to not prompt to override files that were added in the beforeInstall // so I'm just copying a few over at this stage copyWithTemplate( @@ -118,6 +137,12 @@ module.exports = { options, ); + copyWithTemplate( + join(__dirname, 'files-override/shared'), + options.target, + options, + ); + let packageJson = join(options.target, 'package.json'); let json = JSON.parse(fs.readFileSync(packageJson)); @@ -125,7 +150,8 @@ module.exports = { ...json.scripts, build: 'vite build', start: 'vite', - 'test:ember': 'vite build --mode test && ember test --path dist', + 'test:ember': + 'vite build --mode test && ember test --path dist --config-file ./testem.cjs', }; json['ember-addon'] = { @@ -133,6 +159,7 @@ module.exports = { version: 2, }; + json.type = 'module'; json.exports = { './tests/*': './tests/*', './*': './app/*', diff --git a/tests/default.test.mjs b/tests/default.test.mjs index d79d758..068e853 100644 --- a/tests/default.test.mjs +++ b/tests/default.test.mjs @@ -80,12 +80,12 @@ describe('basic functionality', function () { let result; try { - result = await execa('pnpm', ['test:ember'], { + result = await execa('pnpm', ['test:ember', '--test-port', '0'], { cwd: join(tmpDir.path, appName), }); } catch (err) { console.log(err.stdout, err.stderr); - throw err; + throw 'Failed to successfully run test:ember'; } // make sure that each of the tests that we expect actually show up @@ -125,7 +125,7 @@ describe('basic functionality', function () { }); writeFileSync( - join(tmpDir.path, appName, 'testem-dev.js'), + join(tmpDir.path, appName, 'testem-dev.cjs'), `module.exports = { test_page: 'tests/index.html?hidepassed', disable_watching: true, @@ -147,7 +147,7 @@ describe('basic functionality', function () { }, }, middleware: [ - require(__dirname + '/testem-proxy.js')('${appURL}') + require(__dirname + '/testem-proxy.cjs')('${appURL}') ], }; `, @@ -155,7 +155,7 @@ describe('basic functionality', function () { let testResult = await execa( 'pnpm', - ['testem', '--file', 'testem-dev.js', 'ci'], + ['testem', '--file', 'testem-dev.cjs', 'ci'], { cwd: join(tmpDir.path, appName), }, diff --git a/tests/fixture/testem-proxy.js b/tests/fixture/testem-proxy.cjs similarity index 100% rename from tests/fixture/testem-proxy.js rename to tests/fixture/testem-proxy.cjs