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