ember-cli 6.9.0-alpha.1 → 6.9.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  # ember-cli Changelog
2
2
 
3
+ ## Release (2025-10-14)
4
+
5
+ * ember-cli 6.9.0-alpha.2 (minor)
6
+ * @ember-tooling/classic-build-addon-blueprint 6.9.0-alpha.2 (minor)
7
+ * @ember-tooling/classic-build-app-blueprint 6.9.0-alpha.2 (minor)
8
+ * @ember-tooling/blueprint-blueprint 0.2.1 (patch)
9
+ * @ember-tooling/blueprint-model 0.4.1 (patch)
10
+
11
+ #### :rocket: Enhancement
12
+ * `ember-cli`
13
+ * [#10844](https://github.com/ember-cli/ember-cli/pull/10844) [beta] Error when `ember (generate|destroy) (http-proxy|http-mock|server)` is used in a Vite-based project ([@kategengler](https://github.com/kategengler))
14
+ * `ember-cli`, `@ember-tooling/classic-build-addon-blueprint`, `@ember-tooling/classic-build-app-blueprint`
15
+ * [#10831](https://github.com/ember-cli/ember-cli/pull/10831) [bugfix beta] enable `--strict` by default to match new app blueprint ([@mansona](https://github.com/mansona))
16
+
17
+ #### :bug: Bug Fix
18
+ * `ember-cli`
19
+ * [#10846](https://github.com/ember-cli/ember-cli/pull/10846) [beta bugfix] allow build --watch only in EMBROIDER_PREBUILD ([@mansona](https://github.com/mansona))
20
+ * [#10834](https://github.com/ember-cli/ember-cli/pull/10834) [bugfix release] Fix tests using wrong versions ([@mansona](https://github.com/mansona))
21
+ * [#10826](https://github.com/ember-cli/ember-cli/pull/10826) move resolution of @ember/app-blueprint to prevent loading latest ([@mansona](https://github.com/mansona))
22
+ * `@ember-tooling/classic-build-addon-blueprint`, `@ember-tooling/classic-build-app-blueprint`
23
+ * [#10838](https://github.com/ember-cli/ember-cli/pull/10838) Add package license metadata to match repository ([@davidtaylorhq](https://github.com/davidtaylorhq))
24
+
25
+ #### :memo: Documentation
26
+ * `ember-cli`
27
+ * [#10843](https://github.com/ember-cli/ember-cli/pull/10843) Further contextualize help output and error when options and commands that are no longer supported in Vite-based projects are used ([@kategengler](https://github.com/kategengler))
28
+ * [#10840](https://github.com/ember-cli/ember-cli/pull/10840) [beta] fix help for vite-based projects ([@kategengler](https://github.com/kategengler))
29
+ * [#10835](https://github.com/ember-cli/ember-cli/pull/10835) Update deprecation message for --embroider option ([@kategengler](https://github.com/kategengler))
30
+
31
+ #### :house: Internal
32
+ * `ember-cli`, `@ember-tooling/classic-build-addon-blueprint`, `@ember-tooling/classic-build-app-blueprint`, `@ember-tooling/blueprint-blueprint`, `@ember-tooling/blueprint-model`
33
+ * [#10851](https://github.com/ember-cli/ember-cli/pull/10851) Merge beta into master ([@mansona](https://github.com/mansona))
34
+ * [#10848](https://github.com/ember-cli/ember-cli/pull/10848) merge origin/release into beta ([@mansona](https://github.com/mansona))
35
+ * `ember-cli`, `@ember-tooling/classic-build-app-blueprint`
36
+ * [#10847](https://github.com/ember-cli/ember-cli/pull/10847) Prepare Beta Release ([@mansona](https://github.com/mansona))
37
+ * [#10825](https://github.com/ember-cli/ember-cli/pull/10825) Prepare Beta Release ([@mansona](https://github.com/mansona))
38
+ * [#10820](https://github.com/ember-cli/ember-cli/pull/10820) Prepare Beta Release ([@mansona](https://github.com/mansona))
39
+ * `ember-cli`, `@ember-tooling/classic-build-addon-blueprint`, `@ember-tooling/classic-build-app-blueprint`
40
+ * [#10836](https://github.com/ember-cli/ember-cli/pull/10836) Prepare Beta Release ([@mansona](https://github.com/mansona))
41
+ * `ember-cli`
42
+ * [#10845](https://github.com/ember-cli/ember-cli/pull/10845) [beta] update @ember/app-blueprint to latest beta ([@mansona](https://github.com/mansona))
43
+ * [#10833](https://github.com/ember-cli/ember-cli/pull/10833) [bugfix beta] bump the @ember/app-blueprint version ([@mansona](https://github.com/mansona))
44
+ * [#10823](https://github.com/ember-cli/ember-cli/pull/10823) fix incorrect ember-cli-update version in tests ([@mansona](https://github.com/mansona))
45
+ * [#10819](https://github.com/ember-cli/ember-cli/pull/10819) update @ember/app-blueprint beta version ([@mansona](https://github.com/mansona))
46
+ * [#10809](https://github.com/ember-cli/ember-cli/pull/10809) Update RELEASE ([@mansona](https://github.com/mansona))
47
+
48
+ #### Committers: 3
49
+ - Chris Manson ([@mansona](https://github.com/mansona))
50
+ - David Taylor ([@davidtaylorhq](https://github.com/davidtaylorhq))
51
+ - Katie Gengler ([@kategengler](https://github.com/kategengler))
52
+
3
53
  ## Release (2025-09-17)
4
54
 
5
55
  * ember-cli 6.9.0-alpha.1 (minor)
package/RELEASE.md CHANGED
@@ -16,6 +16,7 @@ During the release week each of the versions are effectively "promoted" i.e. the
16
16
 
17
17
  The release process during release week should look like this:
18
18
 
19
+ - Make sure that `@ember/app-blueprint` is released before starting any of these steps
19
20
  - Merge any outstanding `Prepare Alpha Release` branches
20
21
  - Do an intial stable release from the `release` branch
21
22
  - Merge `release` into `beta`
@@ -23,7 +24,7 @@ The release process during release week should look like this:
23
24
  - Merge `beta` into `master`
24
25
  - Do an `alpha` release
25
26
 
26
- ### Merge any outstanding `Prepare Alpha Release` branches
27
+ ### Merge any outstanding `Prepare Alpha Release` branches
27
28
 
28
29
  This makes sure that you are starting from a "clean slate" before doing any other releases. This will make each of the following steps easier to follow.
29
30
 
@@ -38,19 +39,20 @@ You can use [this saved search](https://github.com/ember-cli/ember-cli/pulls?q=i
38
39
  - Merge `origin/beta` into the release branch
39
40
  - `git merge origin/beta --no-ff`
40
41
  - **make sure to not update the .release-plan file** this should only ever be changed by the release-plan github scripts
41
- - **make sure to not update the .github/workflows/plan-release.yml file** this should still plan a stable release
42
- - **make sure to not update the .github/workflows/publish.yml file** this should still publish a stable release
42
+ - **make sure to not update the .github/workflows/plan-stable-release.yml file** this should still plan a stable release
43
+ - **make sure to not update the .github/workflows/publish-stable.yml file** this should still publish a stable release
43
44
  - **make sure to not update the CHANGELOG.md file** so as not to include the beta or alpha changelogs in the next release
44
45
  - make sure to not update the version in the package.json during this step, this will be release-plan's job
46
+ - make sure to not update the version in the `packages/app-blueprint/package.json`, or `packages/addon-blueprint/package.json` files during this step, this will be release-plan's job
45
47
  - make sure to not add the `release-plan` config section to the package.json during this step. We are releasing a real release so we don't want to configure release-plan to do a pre-release.
46
- - Update blueprint dependencies to latest
48
+ - Update blueprint dependencies to latest. Note: ember-data needs to be updated only in the alpha version from now on, make sure to only update to the release version of what was in the beta.
47
49
 
48
50
  ```
49
- node ./dev/update-blueprint-dependencies.js --ember-source=latest --ember-data=latest
51
+ node ./dev/update-blueprint-dependencies.js --ember-source=latest --ember-data=<whatever version was in the beta>
50
52
  ```
51
53
 
52
54
  - commit this update `git commit -am "update blueprint dependencies to latest"`
53
- - push and open a PR targeting `release` with a PR title like `Update all dependencies for 6.4 release`
55
+ - push and open a PR targeting `release` with a PR title like `Promote Beta and update all dependencies for 6.4 release`
54
56
  - mark this PR as an `enhancement` if it is a minor release
55
57
  - check that everything is ok (i.e. that CI has run correctly and that you have the changes you expect)
56
58
  - merge branch
@@ -64,26 +66,30 @@ You can use [this saved search](https://github.com/ember-cli/ember-cli/pulls?q=i
64
66
  - create a new branch to merge `release` into `beta` e.g. `git checkout --no-track -b merge-release origin/beta`
65
67
  - merge release into this new branch e.g. `git merge origin/release --no-ff`
66
68
  - **make sure to not update the .release-plan file** this should only ever be changed by the release-plan github scripts
67
- - **make sure to not update any .github/workflows/plan-release.yml file** this should still plan a beta release
68
- - **make sure to not update any .github/workflows/publish.yml file** this should still publish a beta release
69
+ - **make sure to not update any .github/workflows/plan-beta-release.yml file** this should still plan a beta release
70
+ - **make sure to not update any .github/workflows/publish-beta.yml file** this should still publish a beta release
69
71
  - make sure to not update the version in the package.json during this step, that step comes later
70
72
  - make sure to not remove the `release-plan` config section to the `package.json`, `packages/addon-blueprint/package.json`, or `packages/app-blueprint/package.json`, during this step.
71
73
  - merge master into this new branch too e.g. `git merge origin/master --no-ff`
72
74
  - **make sure to not update the .release-plan file** this should only ever be changed by the release-plan github scripts
73
75
  - **make sure to not update the CHANGELOG.md file** in this step. It should match the changelog on `origin/release` at this stage.
76
+ - make sure not to update the `release-plan` config in `package.json`, `packages/addon-blueprint/package.json`, or `packages/app-blueprint/package.json`
77
+ - commit the merge `git commit -am "merge master into beta"`
78
+ - update the versions in package.jsons
74
79
  - update the alpha version in package.json to be a beta i.e. if the incoming merge is `"version": "6.6.0-alpha.3",` update it to `"version": "6.6.0-beta.0",`
75
80
  - update the alpha version in `packages/addon-blueprint/package.json` to be a beta
76
81
  - update the alpha version in `packages/app-blueprint/package.json` to be a beta
77
- - make sure not to update the `release-plan` config in `package.json`, `packages/addon-blueprint/package.json`, or `packages/app-blueprint/package.json`
78
82
  - update the `ember-cli` reference in `packages/app-blueprint/files/package.json` to be the same as the version you just put in the top level package.json
83
+ - commit the version changes `git commit -am "update versions"`
79
84
  - Update blueprint dependencies to beta
80
85
 
81
86
  ```
82
87
  node ./dev/update-blueprint-dependencies.js --ember-source=beta --ember-data=beta
83
88
  ```
84
89
 
90
+ - update the @ember/app-blueprint dependency `pnpm i -w @ember/app-blueprint@beta`
91
+ - manually add a `~` back into the `@ember/app-blueprint` dependency in the root package.json
85
92
  - commit this update `git commit -am "update blueprint dependencies to beta"`
86
- - **TODO**: document how to update @ember/app-blueprint dependency
87
93
  - push and open a PR targeting `beta` with a PR title like `Prepare 6.5-beta`
88
94
  - mark this PR as an `enchancement` if the next beta is a minor release
89
95
  - check that everything is ok i.e. CI passes
@@ -104,7 +110,8 @@ You can use [this saved search](https://github.com/ember-cli/ember-cli/pulls?q=i
104
110
  - **make sure to not update any .github/workflows/plan-release.yml file** this should still plan a beta release
105
111
  - **make sure to not update any .github/workflows/publish.yml file** this should still publish a beta release
106
112
  - **make sure to not update the CHANGELOG.md file** in this step.
107
- - manually update the version in package.json to be the next alpha.
113
+ - commit this merge
114
+ - manually update the version in `package.json` to be the next alpha.
108
115
  - e.g. if the current alpha is `"version": "6.6.0-alpha.3",` update it to be `"version": "6.7.0-alpha.0",`
109
116
  - manually update the alpha version in `packages/addon-blueprint/package.json` to be the same alpha
110
117
  - manually update the alpha version in `packages/app-blueprint/package.json` to be the same alpha
@@ -112,11 +119,11 @@ You can use [this saved search](https://github.com/ember-cli/ember-cli/pulls?q=i
112
119
  - Update blueprint dependencies to alpha
113
120
 
114
121
  ```
115
- node ./dev/update-blueprint-dependencies.js --ember-source=alpha --ember-data=canary
122
+ node ./dev/update-blueprint-dependencies.js --ember-source=alpha --ember-data=latest
116
123
  ```
117
124
 
125
+ - update the @ember/app-blueprint dependency `pnpm i -w @ember/app-blueprint@alpha`
118
126
  - commit this update `git commit -am "update blueprint dependencies to alpha"`
119
- - **TODO**: document how to update @ember/app-blueprint dependency
120
127
  - push and open a PR targeting `master` with a PR title like `Prepare 6.6-alpha`
121
128
  - mark this PR as an `enchancement` if the next alpha is a minor release
122
129
  - check that everything is ok i.e. CI passes
@@ -2,9 +2,10 @@
2
2
 
3
3
  const Blueprint = require('../../lib/models/blueprint');
4
4
  const isPackageMissing = require('ember-cli-is-package-missing');
5
+ const SilentError = require('silent-error');
5
6
 
6
7
  module.exports = {
7
- description: 'Generates a mock api endpoint in /api prefix.',
8
+ description: '[Classic Only] Generates a mock api endpoint in /api prefix.',
8
9
 
9
10
  anonymousOptions: ['endpoint-path'],
10
11
 
@@ -15,6 +16,10 @@ module.exports = {
15
16
  },
16
17
 
17
18
  beforeInstall(options) {
19
+ if (this.project.isViteProject()) {
20
+ throw new SilentError('The http-mock blueprint is not supported in Vite projects.');
21
+ }
22
+
18
23
  let serverBlueprint = Blueprint.lookup('server', {
19
24
  ui: this.ui,
20
25
  project: this.project,
@@ -1,9 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  const Blueprint = require('../../lib/models/blueprint');
4
+ const SilentError = require('silent-error');
4
5
 
5
6
  module.exports = {
6
- description: 'Generates a relative proxy to another server.',
7
+ description: '[Classic Only] Generates a relative proxy to another server.',
7
8
 
8
9
  anonymousOptions: ['local-path', 'remote-url'],
9
10
 
@@ -16,6 +17,10 @@ module.exports = {
16
17
  },
17
18
 
18
19
  beforeInstall(options) {
20
+ if (this.project.isViteProject()) {
21
+ throw new SilentError('The http-proxy blueprint is not supported in Vite projects.');
22
+ }
23
+
19
24
  let serverBlueprint = Blueprint.lookup('server', {
20
25
  ui: this.ui,
21
26
  project: this.project,
@@ -1,12 +1,19 @@
1
1
  'use strict';
2
2
 
3
3
  const isPackageMissing = require('ember-cli-is-package-missing');
4
+ const SilentError = require('silent-error');
4
5
 
5
6
  module.exports = {
6
- description: 'Generates a server directory for mocks and proxies.',
7
+ description: '[Classic Only] Generates a server directory for mocks and proxies.',
7
8
 
8
9
  normalizeEntityName() {},
9
10
 
11
+ beforeInstall() {
12
+ if (this.project.isViteProject()) {
13
+ throw new SilentError('The server blueprint is not supported in Vite projects.');
14
+ }
15
+ },
16
+
10
17
  afterInstall(options) {
11
18
  let isMorganMissing = isPackageMissing(this, 'morgan');
12
19
  let isGlobMissing = isPackageMissing(this, 'glob');
@@ -3,7 +3,7 @@
3
3
  "logo": "https://ember-cli.com/assets/images/ember-cli-logo-small-dark.png",
4
4
  "name": "ember-cli",
5
5
  "description": "Command line tool for developing ambitious ember.js apps",
6
- "version": "6.9.0-alpha.1-master-ac3220f6b8"
6
+ "version": "6.9.0-alpha.2-master-01a68b9b36"
7
7
  },
8
8
  "files": {
9
9
  "lib/broccoli/default-packager.js": {
@@ -5118,6 +5118,16 @@
5118
5118
  {
5119
5119
  "file": "lib/models/command.js",
5120
5120
  "line": 92,
5121
+ "final": 1,
5122
+ "itemtype": "property",
5123
+ "name": "isViteProject",
5124
+ "type": "Boolean",
5125
+ "class": "Command",
5126
+ "module": "ember-cli"
5127
+ },
5128
+ {
5129
+ "file": "lib/models/command.js",
5130
+ "line": 99,
5121
5131
  "description": "The name of the command.",
5122
5132
  "final": 1,
5123
5133
  "itemtype": "property",
@@ -5131,7 +5141,7 @@
5131
5141
  },
5132
5142
  {
5133
5143
  "file": "lib/models/command.js",
5134
- "line": 104,
5144
+ "line": 111,
5135
5145
  "description": "An array of aliases for the command",
5136
5146
  "final": 1,
5137
5147
  "itemtype": "property",
@@ -5145,7 +5155,7 @@
5145
5155
  },
5146
5156
  {
5147
5157
  "file": "lib/models/command.js",
5148
- "line": 121,
5158
+ "line": 128,
5149
5159
  "description": "An array of available options for the command",
5150
5160
  "final": 1,
5151
5161
  "itemtype": "property",
@@ -5159,7 +5169,7 @@
5159
5169
  },
5160
5170
  {
5161
5171
  "file": "lib/models/command.js",
5162
- "line": 141,
5172
+ "line": 148,
5163
5173
  "description": "An array of anonymous options for the command",
5164
5174
  "final": 1,
5165
5175
  "itemtype": "property",
@@ -5173,7 +5183,7 @@
5173
5183
  },
5174
5184
  {
5175
5185
  "file": "lib/models/command.js",
5176
- "line": 157,
5186
+ "line": 164,
5177
5187
  "description": "Registers options with command. This method provides the ability to extend or override command options.\nExpects an object containing anonymousOptions or availableOptions, which it will then merge with\nexisting availableOptions before building the optionsAliases which are used to define shorthands.",
5178
5188
  "itemtype": "method",
5179
5189
  "name": "registerOptions",
@@ -5189,7 +5199,7 @@
5189
5199
  },
5190
5200
  {
5191
5201
  "file": "lib/models/command.js",
5192
- "line": 183,
5202
+ "line": 190,
5193
5203
  "description": "Called when command is interrupted from outside, e.g. ctrl+C or process kill\nCan be used to cleanup artifacts produced by command and control process exit code",
5194
5204
  "itemtype": "method",
5195
5205
  "name": "onInterrupt",
@@ -5202,7 +5212,7 @@
5202
5212
  },
5203
5213
  {
5204
5214
  "file": "lib/models/command.js",
5205
- "line": 210,
5215
+ "line": 217,
5206
5216
  "description": "Looks up for the task and runs\nIt also keeps the reference for the current active task\nKeeping reference for the current task allows to cleanup task on interruption",
5207
5217
  "access": "private",
5208
5218
  "tagname": "",
@@ -5233,7 +5243,7 @@
5233
5243
  },
5234
5244
  {
5235
5245
  "file": "lib/models/command.js",
5236
- "line": 251,
5246
+ "line": 258,
5237
5247
  "description": "Hook for extending a command before it is run in the cli.run command.\nMost common use case would be to extend availableOptions.",
5238
5248
  "itemtype": "method",
5239
5249
  "name": "beforeRun",
@@ -5246,7 +5256,7 @@
5246
5256
  },
5247
5257
  {
5248
5258
  "file": "lib/models/command.js",
5249
- "line": 259,
5259
+ "line": 266,
5250
5260
  "itemtype": "method",
5251
5261
  "name": "validateAndRun",
5252
5262
  "return": {
@@ -5258,7 +5268,7 @@
5258
5268
  },
5259
5269
  {
5260
5270
  "file": "lib/models/command.js",
5261
- "line": 319,
5271
+ "line": 326,
5262
5272
  "description": "Reports if the given command has a command line option by a given name",
5263
5273
  "itemtype": "method",
5264
5274
  "name": "hasOption",
@@ -5278,7 +5288,7 @@
5278
5288
  },
5279
5289
  {
5280
5290
  "file": "lib/models/command.js",
5281
- "line": 335,
5291
+ "line": 342,
5282
5292
  "description": "Merges any options with duplicate keys in the availableOptions array.\nUsed primarily by registerOptions.",
5283
5293
  "itemtype": "method",
5284
5294
  "name": "mergeDuplicateOption",
@@ -5298,7 +5308,7 @@
5298
5308
  },
5299
5309
  {
5300
5310
  "file": "lib/models/command.js",
5301
- "line": 370,
5311
+ "line": 377,
5302
5312
  "description": "Normalizes option, filling in implicit values",
5303
5313
  "itemtype": "method",
5304
5314
  "name": "normalizeOption",
@@ -5318,7 +5328,7 @@
5318
5328
  },
5319
5329
  {
5320
5330
  "file": "lib/models/command.js",
5321
- "line": 382,
5331
+ "line": 389,
5322
5332
  "description": "Assigns option",
5323
5333
  "itemtype": "method",
5324
5334
  "name": "assignOption",
@@ -5348,7 +5358,7 @@
5348
5358
  },
5349
5359
  {
5350
5360
  "file": "lib/models/command.js",
5351
- "line": 415,
5361
+ "line": 422,
5352
5362
  "description": "Validates option",
5353
5363
  "itemtype": "method",
5354
5364
  "name": "validateOption",
@@ -5368,7 +5378,7 @@
5368
5378
  },
5369
5379
  {
5370
5380
  "file": "lib/models/command.js",
5371
- "line": 441,
5381
+ "line": 448,
5372
5382
  "description": "Parses alias for an option and adds it to optionsAliases",
5373
5383
  "itemtype": "method",
5374
5384
  "name": "parseAlias",
@@ -5393,7 +5403,7 @@
5393
5403
  },
5394
5404
  {
5395
5405
  "file": "lib/models/command.js",
5396
- "line": 486,
5406
+ "line": 493,
5397
5407
  "itemtype": "method",
5398
5408
  "name": "assignAlias",
5399
5409
  "params": [
@@ -5415,7 +5425,7 @@
5415
5425
  },
5416
5426
  {
5417
5427
  "file": "lib/models/command.js",
5418
- "line": 501,
5428
+ "line": 508,
5419
5429
  "description": "Validates alias value",
5420
5430
  "itemtype": "method",
5421
5431
  "name": "validateAlias",
@@ -5435,7 +5445,7 @@
5435
5445
  },
5436
5446
  {
5437
5447
  "file": "lib/models/command.js",
5438
- "line": 533,
5448
+ "line": 540,
5439
5449
  "description": "Parses command arguments and processes",
5440
5450
  "itemtype": "method",
5441
5451
  "name": "parseArgs",
@@ -5455,7 +5465,7 @@
5455
5465
  },
5456
5466
  {
5457
5467
  "file": "lib/models/command.js",
5458
- "line": 589,
5468
+ "line": 596,
5459
5469
  "itemtype": "method",
5460
5470
  "name": "run",
5461
5471
  "params": [
@@ -5469,7 +5479,7 @@
5469
5479
  },
5470
5480
  {
5471
5481
  "file": "lib/models/command.js",
5472
- "line": 599,
5482
+ "line": 606,
5473
5483
  "description": "Prints basic help for the command.\n\nBasic help looks like this:\n\n ember generate <blueprint> <options...>\n Generates new code from blueprints\n aliases: g\n --dry-run (Default: false)\n --verbose (Default: false)\n\nThe default implementation is designed to cover all bases\nbut may be overridden if necessary.",
5474
5484
  "itemtype": "method",
5475
5485
  "name": "printBasicHelp",
@@ -5478,7 +5488,7 @@
5478
5488
  },
5479
5489
  {
5480
5490
  "file": "lib/models/command.js",
5481
- "line": 630,
5491
+ "line": 637,
5482
5492
  "description": "Prints detailed help for the command.\n\nThe default implementation is no-op and should be overridden\nfor each command where further help text is required.",
5483
5493
  "itemtype": "method",
5484
5494
  "name": "printDetailedHelp",
@@ -5487,7 +5497,7 @@
5487
5497
  },
5488
5498
  {
5489
5499
  "file": "lib/models/command.js",
5490
- "line": 640,
5500
+ "line": 647,
5491
5501
  "itemtype": "method",
5492
5502
  "name": "getJson",
5493
5503
  "params": [
@@ -5773,7 +5783,7 @@
5773
5783
  },
5774
5784
  {
5775
5785
  "file": "lib/models/project.js",
5776
- "line": 156,
5786
+ "line": 160,
5777
5787
  "description": "Returns the name from package.json.",
5778
5788
  "access": "private",
5779
5789
  "tagname": "",
@@ -5788,8 +5798,8 @@
5788
5798
  },
5789
5799
  {
5790
5800
  "file": "lib/models/project.js",
5791
- "line": 169,
5792
- "description": "Returns whether or not this is an Ember CLI project.\nThis checks whether ember-cli is listed in devDependencies.",
5801
+ "line": 173,
5802
+ "description": "Returns whether or not this is an Ember CLI project.\nThis checks whether ember-cli is listed in (dev)Dependencies.",
5793
5803
  "access": "private",
5794
5804
  "tagname": "",
5795
5805
  "itemtype": "method",
@@ -5803,7 +5813,22 @@
5803
5813
  },
5804
5814
  {
5805
5815
  "file": "lib/models/project.js",
5806
- "line": 181,
5816
+ "line": 185,
5817
+ "description": "Returns whether this is a Vite-based project.\nThis checks whether @embroider/vite is listed in (dev)Dependencies.",
5818
+ "access": "private",
5819
+ "tagname": "",
5820
+ "itemtype": "method",
5821
+ "name": "isViteProject",
5822
+ "return": {
5823
+ "description": "Whether this is a Vite project",
5824
+ "type": "Boolean"
5825
+ },
5826
+ "class": "Project",
5827
+ "module": "ember-cli"
5828
+ },
5829
+ {
5830
+ "file": "lib/models/project.js",
5831
+ "line": 197,
5807
5832
  "description": "Returns whether or not this is an Ember CLI addon.",
5808
5833
  "itemtype": "method",
5809
5834
  "name": "isEmberCLIAddon",
@@ -5816,7 +5841,7 @@
5816
5841
  },
5817
5842
  {
5818
5843
  "file": "lib/models/project.js",
5819
- "line": 191,
5844
+ "line": 207,
5820
5845
  "description": "Returns the path to the configuration.",
5821
5846
  "access": "private",
5822
5847
  "tagname": "",
@@ -5831,7 +5856,7 @@
5831
5856
  },
5832
5857
  {
5833
5858
  "file": "lib/models/project.js",
5834
- "line": 208,
5859
+ "line": 224,
5835
5860
  "description": "Loads the configuration for this project and its addons.",
5836
5861
  "access": "public",
5837
5862
  "tagname": "",
@@ -5853,7 +5878,7 @@
5853
5878
  },
5854
5879
  {
5855
5880
  "file": "lib/models/project.js",
5856
- "line": 227,
5881
+ "line": 243,
5857
5882
  "access": "private",
5858
5883
  "tagname": "",
5859
5884
  "itemtype": "method",
@@ -5874,7 +5899,7 @@
5874
5899
  },
5875
5900
  {
5876
5901
  "file": "lib/models/project.js",
5877
- "line": 246,
5902
+ "line": 262,
5878
5903
  "description": "Returns the targets of this project, or the default targets if not present.",
5879
5904
  "access": "public",
5880
5905
  "tagname": "",
@@ -5889,7 +5914,7 @@
5889
5914
  },
5890
5915
  {
5891
5916
  "file": "lib/models/project.js",
5892
- "line": 273,
5917
+ "line": 289,
5893
5918
  "description": "Returns the addons configuration.",
5894
5919
  "access": "private",
5895
5920
  "tagname": "",
@@ -5916,7 +5941,7 @@
5916
5941
  },
5917
5942
  {
5918
5943
  "file": "lib/models/project.js",
5919
- "line": 296,
5944
+ "line": 312,
5920
5945
  "description": "Returns whether or not the given file name is present in this project.",
5921
5946
  "access": "private",
5922
5947
  "tagname": "",
@@ -5938,7 +5963,7 @@
5938
5963
  },
5939
5964
  {
5940
5965
  "file": "lib/models/project.js",
5941
- "line": 308,
5966
+ "line": 324,
5942
5967
  "description": "Resolves the absolute path to a file synchronously",
5943
5968
  "access": "private",
5944
5969
  "tagname": "",
@@ -5960,7 +5985,7 @@
5960
5985
  },
5961
5986
  {
5962
5987
  "file": "lib/models/project.js",
5963
- "line": 322,
5988
+ "line": 338,
5964
5989
  "description": "Calls `require` on a given module from the context of the project. For\ninstance, an addon may want to require a class from the root project's\nversion of ember-cli.",
5965
5990
  "access": "public",
5966
5991
  "tagname": "",
@@ -5982,7 +6007,7 @@
5982
6007
  },
5983
6008
  {
5984
6009
  "file": "lib/models/project.js",
5985
- "line": 337,
6010
+ "line": 353,
5986
6011
  "description": "Returns the dependencies from a package.json",
5987
6012
  "access": "private",
5988
6013
  "tagname": "",
@@ -6013,7 +6038,7 @@
6013
6038
  },
6014
6039
  {
6015
6040
  "file": "lib/models/project.js",
6016
- "line": 357,
6041
+ "line": 373,
6017
6042
  "description": "Provides the list of paths to consult for addons that may be provided\ninternally to this project. Used for middleware addons with built-in support.",
6018
6043
  "access": "private",
6019
6044
  "tagname": "",
@@ -6024,7 +6049,7 @@
6024
6049
  },
6025
6050
  {
6026
6051
  "file": "lib/models/project.js",
6027
- "line": 383,
6052
+ "line": 399,
6028
6053
  "description": "Discovers all addons for this project and stores their names and\npackage.json contents in this.addonPackages as key-value pairs.\n\nAny packageInfos that we find that are marked as not valid are excluded.",
6029
6054
  "access": "private",
6030
6055
  "tagname": "",
@@ -6035,7 +6060,7 @@
6035
6060
  },
6036
6061
  {
6037
6062
  "file": "lib/models/project.js",
6038
- "line": 405,
6063
+ "line": 421,
6039
6064
  "description": "Loads and initializes all addons for this project.",
6040
6065
  "access": "private",
6041
6066
  "tagname": "",
@@ -6046,7 +6071,7 @@
6046
6071
  },
6047
6072
  {
6048
6073
  "file": "lib/models/project.js",
6049
- "line": 426,
6074
+ "line": 442,
6050
6075
  "description": "Returns what commands are made available by addons by inspecting\n`includedCommands` for every addon.",
6051
6076
  "access": "private",
6052
6077
  "tagname": "",
@@ -6061,7 +6086,7 @@
6061
6086
  },
6062
6087
  {
6063
6088
  "file": "lib/models/project.js",
6064
- "line": 467,
6089
+ "line": 483,
6065
6090
  "description": "Execute a given callback for every addon command.\nExample:\n\n```\nproject.eachAddonCommand(function(addonName, commands) {\n console.log('Addon ' + addonName + ' exported the following commands:' + commands.keys().join(', '));\n});\n```",
6066
6091
  "access": "private",
6067
6092
  "tagname": "",
@@ -6079,7 +6104,7 @@
6079
6104
  },
6080
6105
  {
6081
6106
  "file": "lib/models/project.js",
6082
- "line": 490,
6107
+ "line": 506,
6083
6108
  "description": "Path to the blueprints for this project.",
6084
6109
  "access": "private",
6085
6110
  "tagname": "",
@@ -6094,7 +6119,7 @@
6094
6119
  },
6095
6120
  {
6096
6121
  "file": "lib/models/project.js",
6097
- "line": 501,
6122
+ "line": 517,
6098
6123
  "description": "Returns a list of paths (including addon paths) where blueprints will be looked up.",
6099
6124
  "access": "private",
6100
6125
  "tagname": "",
@@ -6109,7 +6134,7 @@
6109
6134
  },
6110
6135
  {
6111
6136
  "file": "lib/models/project.js",
6112
- "line": 519,
6137
+ "line": 535,
6113
6138
  "description": "Returns a list of addon paths where blueprints will be looked up.",
6114
6139
  "access": "private",
6115
6140
  "tagname": "",
@@ -6124,7 +6149,7 @@
6124
6149
  },
6125
6150
  {
6126
6151
  "file": "lib/models/project.js",
6127
- "line": 542,
6152
+ "line": 558,
6128
6153
  "description": "Reloads package.json of the project. Clears and reloads the packageInfo and\nper-bundle addon cache, too.",
6129
6154
  "access": "private",
6130
6155
  "tagname": "",
@@ -6139,7 +6164,7 @@
6139
6164
  },
6140
6165
  {
6141
6166
  "file": "lib/models/project.js",
6142
- "line": 570,
6167
+ "line": 586,
6143
6168
  "description": "Re-initializes addons.",
6144
6169
  "access": "private",
6145
6170
  "tagname": "",
@@ -6150,7 +6175,7 @@
6150
6175
  },
6151
6176
  {
6152
6177
  "file": "lib/models/project.js",
6153
- "line": 583,
6178
+ "line": 599,
6154
6179
  "description": "Find an addon by its name",
6155
6180
  "access": "public",
6156
6181
  "tagname": "",
@@ -6172,7 +6197,7 @@
6172
6197
  },
6173
6198
  {
6174
6199
  "file": "lib/models/project.js",
6175
- "line": 597,
6200
+ "line": 613,
6176
6201
  "description": "Generate test file contents.\n\nThis method is supposed to be overwritten by test framework addons\nlike `ember-qunit`.",
6177
6202
  "access": "public",
6178
6203
  "tagname": "",
@@ -6199,7 +6224,7 @@
6199
6224
  },
6200
6225
  {
6201
6226
  "file": "lib/models/project.js",
6202
- "line": 621,
6227
+ "line": 637,
6203
6228
  "description": "Returns a new project based on the first `package.json` that is found\nin `pathName`.\n\nIf the above `package.json` specifies `ember-addon.projectRoot`, we load\nthe project based on the relative path between this directory and the\nspecified `projectRoot`.",
6204
6229
  "access": "private",
6205
6230
  "tagname": "",
@@ -6227,7 +6252,7 @@
6227
6252
  },
6228
6253
  {
6229
6254
  "file": "lib/models/project.js",
6230
- "line": 672,
6255
+ "line": 688,
6231
6256
  "description": "Returns a new project based on the first package.json that is found\nin `pathName`, or the nullProject.\n\nThe nullProject signifies no-project, but abides by the null object pattern",
6232
6257
  "access": "private",
6233
6258
  "tagname": "",
@@ -6250,7 +6275,7 @@
6250
6275
  },
6251
6276
  {
6252
6277
  "file": "lib/models/project.js",
6253
- "line": 696,
6278
+ "line": 712,
6254
6279
  "description": "Returns the project root based on the first package.json that is found",
6255
6280
  "static": 1,
6256
6281
  "itemtype": "method",
@@ -41,7 +41,7 @@ module.exports = NewCommand.extend({
41
41
  {
42
42
  name: 'strict',
43
43
  type: Boolean,
44
- default: false,
44
+ default: true,
45
45
  description: 'Use GJS/GTS templates by default for generated components, tests, and route templates',
46
46
  },
47
47
  ],
@@ -5,12 +5,20 @@ const Command = require('../models/command');
5
5
  module.exports = Command.extend({
6
6
  name: 'asset-sizes',
7
7
  description: 'Shows the sizes of your asset files.',
8
+ skipHelp: true,
8
9
 
9
10
  availableOptions: [
10
11
  { name: 'output-path', type: 'Path', default: 'dist/', aliases: ['o'] },
11
12
  { name: 'json', type: Boolean, default: false },
12
13
  ],
13
14
 
15
+ init() {
16
+ this._super.apply(this, arguments);
17
+ if (!this.isViteProject) {
18
+ this.skipHelp = false;
19
+ }
20
+ },
21
+
14
22
  run(commandOptions) {
15
23
  return this.runTask('ShowAssetSizes', commandOptions);
16
24
  },
@@ -2,10 +2,16 @@
2
2
 
3
3
  const Command = require('../models/command');
4
4
  const Win = require('../utilities/windows-admin');
5
+ const SilentError = require('silent-error');
6
+
7
+ const ClassicOptions = [
8
+ { name: 'watch', type: Boolean, default: false, aliases: ['w'] },
9
+ { name: 'watcher', type: String },
10
+ ];
5
11
 
6
12
  module.exports = Command.extend({
7
13
  name: 'build',
8
- description: 'Builds your app and places it into the output path (dist/ by default).',
14
+ description: 'Vestigial command in Vite-based projects. Use the `build` script from package.json instead.',
9
15
  aliases: ['b'],
10
16
 
11
17
  availableOptions: [
@@ -16,13 +22,42 @@ module.exports = Command.extend({
16
22
  aliases: ['e', { dev: 'development' }, { prod: 'production' }],
17
23
  description: 'Possible values are "development", "production", and "test".',
18
24
  },
19
- { name: 'output-path', type: 'Path', default: 'dist/', aliases: ['o'] },
20
- { name: 'watch', type: Boolean, default: false, aliases: ['w'] },
21
- { name: 'watcher', type: String },
22
25
  { name: 'suppress-sizes', type: Boolean, default: false },
26
+ { name: 'output-path', type: 'Path', default: 'dist/', aliases: ['o'] },
23
27
  ],
24
28
 
29
+ init() {
30
+ this._super.apply(this, arguments);
31
+ if (!this.isViteProject) {
32
+ this.description = 'Builds your app and places it into the output path (dist/ by default).';
33
+ this.availableOptions = this.availableOptions.concat(ClassicOptions);
34
+ } else if (process.env.EMBROIDER_PREBUILD) {
35
+ // having the --watch option available surpresses a warning that you get in Vite prebuild
36
+ this.availableOptions = this.availableOptions.concat(ClassicOptions[0]);
37
+ }
38
+ },
39
+
25
40
  async run(commandOptions) {
41
+ if (this.isViteProject && !process.env.EMBROIDER_PREBUILD) {
42
+ // --watch is used during Embroider prebuild but should never be used directly so we only throw in this case if
43
+ // EMBROIDER_PREBUILD has been set
44
+ if (commandOptions.watch) {
45
+ return Promise.reject(
46
+ new SilentError(
47
+ 'The `--watch` option to `ember build` is not supported in Vite-based projects. Please use `vite dev` instead.'
48
+ )
49
+ );
50
+ }
51
+
52
+ if (commandOptions.watcher) {
53
+ return Promise.reject(
54
+ new SilentError(
55
+ 'The `--watcher` option to `ember build` is not supported in Vite-based projects. Please use `vite dev` instead.'
56
+ )
57
+ );
58
+ }
59
+ }
60
+
26
61
  await Win.checkIfSymlinksNeedToBeEnabled(this.ui);
27
62
 
28
63
  let buildTaskName = commandOptions.watch ? 'BuildWatch' : 'Build';
@@ -6,6 +6,8 @@ const mergeBlueprintOptions = require('../utilities/merge-blueprint-options');
6
6
  const merge = require('lodash/merge');
7
7
  const SilentError = require('silent-error');
8
8
 
9
+ const ClassicOptions = [{ name: 'dummy', type: Boolean, default: false, aliases: ['dum', 'id'] }];
10
+
9
11
  module.exports = Command.extend({
10
12
  name: 'destroy',
11
13
  description: 'Destroys code generated by `generate` command.',
@@ -17,7 +19,6 @@ module.exports = Command.extend({
17
19
  { name: 'verbose', type: Boolean, default: false, aliases: ['v'] },
18
20
  { name: 'pod', type: Boolean, default: false, aliases: ['p', 'pods'] },
19
21
  { name: 'classic', type: Boolean, default: false, aliases: ['c'] },
20
- { name: 'dummy', type: Boolean, default: false, aliases: ['dum', 'id'] },
21
22
  { name: 'in-repo-addon', type: String, default: null, aliases: ['in-repo', 'ir'] },
22
23
  {
23
24
  name: 'in',
@@ -37,9 +38,22 @@ module.exports = Command.extend({
37
38
 
38
39
  anonymousOptions: ['<blueprint>'],
39
40
 
41
+ init() {
42
+ this._super.apply(this, arguments);
43
+ if (!this.isViteProject) {
44
+ this.availableOptions = this.availableOptions.concat(ClassicOptions);
45
+ }
46
+ },
47
+
40
48
  beforeRun: mergeBlueprintOptions,
41
49
 
42
50
  run(commandOptions, rawArgs) {
51
+ if (this.isViteProject && commandOptions.dummy) {
52
+ return Promise.reject(
53
+ new SilentError('The `--dummy` option to `ember destroy` is not supported in Vite-based projects.')
54
+ );
55
+ }
56
+
43
57
  let blueprintName = rawArgs[0];
44
58
  let entityName = rawArgs[1];
45
59
 
@@ -15,6 +15,8 @@ const UNKNOWN_BLUEPRINT_ERROR =
15
15
  'blueprint name to be specified. ' +
16
16
  'For more details, use `ember help`';
17
17
 
18
+ const ClassicOptions = [{ name: 'dummy', type: Boolean, default: false, aliases: ['dum', 'id'] }];
19
+
18
20
  module.exports = Command.extend({
19
21
  name: 'generate',
20
22
  description: 'Generates new code from blueprints.',
@@ -26,7 +28,6 @@ module.exports = Command.extend({
26
28
  { name: 'verbose', type: Boolean, default: false, aliases: ['v'] },
27
29
  { name: 'pod', type: Boolean, default: false, aliases: ['p', 'pods'] },
28
30
  { name: 'classic', type: Boolean, default: false, aliases: ['c'] },
29
- { name: 'dummy', type: Boolean, default: false, aliases: ['dum', 'id'] },
30
31
  { name: 'in-repo-addon', type: String, default: null, aliases: ['in-repo', 'ir'] },
31
32
  { name: 'lint-fix', type: Boolean, default: true },
32
33
  {
@@ -46,9 +47,22 @@ module.exports = Command.extend({
46
47
 
47
48
  anonymousOptions: ['<blueprint>'],
48
49
 
50
+ init() {
51
+ this._super.apply(this, arguments);
52
+ if (!this.isViteProject) {
53
+ this.availableOptions = this.availableOptions.concat(ClassicOptions);
54
+ }
55
+ },
56
+
49
57
  beforeRun: mergeBlueprintOptions,
50
58
 
51
59
  run(commandOptions, rawArgs) {
60
+ if (this.isViteProject && commandOptions.dummy) {
61
+ return Promise.reject(
62
+ new SilentError('The `--dummy` option to `ember generate` is not supported in Vite-based projects.')
63
+ );
64
+ }
65
+
52
66
  let blueprintName = rawArgs[0];
53
67
 
54
68
  if (!blueprintName) {
@@ -12,8 +12,6 @@ const { isPnpmProject, isYarnProject } = require('../utilities/package-managers'
12
12
  const getLangArg = require('../../lib/utilities/get-lang-arg');
13
13
  const { deprecate, DEPRECATIONS } = require('../debug');
14
14
 
15
- const { isExperimentEnabled } = require('@ember-tooling/blueprint-model/utilities/experiments');
16
-
17
15
  module.exports = Command.extend({
18
16
  name: 'init',
19
17
  description: 'Reinitializes a new ember-cli project in the current folder.',
@@ -70,7 +68,7 @@ module.exports = Command.extend({
70
68
  {
71
69
  name: 'strict',
72
70
  type: Boolean,
73
- default: false,
71
+ default: true,
74
72
  description: 'Use GJS/GTS templates by default for generated components, tests, and route templates',
75
73
  },
76
74
  ],
@@ -126,10 +124,6 @@ module.exports = Command.extend({
126
124
  let blueprintOpts = clone(commandOptions);
127
125
  let blueprint = normalizeBlueprint(blueprintOpts.blueprint || this._defaultBlueprint());
128
126
 
129
- if (isExperimentEnabled('VITE') && blueprint === 'app') {
130
- blueprint = '@ember/app-blueprint';
131
- }
132
-
133
127
  merge(blueprintOpts, {
134
128
  rawName: packageName,
135
129
  targetFiles: rawArgs || [],
@@ -72,7 +72,7 @@ module.exports = Command.extend({
72
72
  {
73
73
  name: 'strict',
74
74
  type: Boolean,
75
- default: false,
75
+ default: true,
76
76
  description: 'Use GJS/GTS templates by default for generated components, tests, and route templates',
77
77
  },
78
78
  ],
@@ -83,7 +83,7 @@ module.exports = Command.extend({
83
83
 
84
84
  async run(commandOptions, rawArgs) {
85
85
  deprecate(
86
- "Don't use `--embroider` option. Use `-b @ember/app-blueprint` instead.",
86
+ "Don't use `--embroider` option. Generating a new project will use the latest Vite-based embroider by default.",
87
87
  !commandOptions.embroider,
88
88
  DEPRECATIONS.EMBROIDER.options
89
89
  );
@@ -160,7 +160,7 @@ module.exports = Command.extend({
160
160
  initCommand.project.root = process.cwd();
161
161
 
162
162
  deprecate(
163
- "Don't use `--embroider` option. Use `-b @ember/app-blueprint` instead.",
163
+ "Don't use `--embroider` option. Generating a new project will use the latest Vite-based embroider by default.",
164
164
  !commandOptions.embroider,
165
165
  DEPRECATIONS.EMBROIDER.options
166
166
  );
@@ -10,7 +10,8 @@ const DEFAULT_PORT = 4200;
10
10
 
11
11
  module.exports = Command.extend({
12
12
  name: 'serve',
13
- description: 'Builds and serves your app, rebuilding on file changes.',
13
+ description: 'Vestigial command in Vite-based projects. Use the `start` script from package.json instead.',
14
+ skipHelp: true,
14
15
  aliases: ['server', 's'],
15
16
 
16
17
  availableOptions: [
@@ -88,7 +89,23 @@ module.exports = Command.extend({
88
89
  { name: 'path', type: 'Path', description: 'Reuse an existing build at given path.' },
89
90
  ],
90
91
 
92
+ init() {
93
+ this._super.apply(this, arguments);
94
+ if (!this.isViteProject) {
95
+ this.skipHelp = false;
96
+ this.description = 'Builds and serves your app, rebuilding on file changes.';
97
+ }
98
+ },
99
+
91
100
  async run(commandOptions) {
101
+ if (this.isViteProject) {
102
+ return Promise.reject(
103
+ new SilentError(
104
+ 'The `serve` command is not supported in Vite-based projects. Please use the `start` script from package.json.'
105
+ )
106
+ );
107
+ }
108
+
92
109
  commandOptions.liveReloadHost = commandOptions.liveReloadHost || commandOptions.host;
93
110
 
94
111
  let wrappedCommandOptions = await this._checkOrGetPort(commandOptions);
@@ -16,6 +16,11 @@ temp.track();
16
16
 
17
17
  let defaultPort = 7357;
18
18
 
19
+ const ClassicOptions = [
20
+ { name: 'server', type: Boolean, default: false, aliases: ['s'] },
21
+ { name: 'output-path', type: 'Path', aliases: ['o'] },
22
+ ];
23
+
19
24
  module.exports = Command.extend({
20
25
  name: 'test',
21
26
  description: "Runs your app's test suite.",
@@ -30,7 +35,6 @@ module.exports = Command.extend({
30
35
  description: 'Possible values are "development", "production", and "test".',
31
36
  },
32
37
  { name: 'config-file', type: String, aliases: ['c', 'cf'] },
33
- { name: 'server', type: Boolean, default: false, aliases: ['s'] },
34
38
  { name: 'host', type: String, aliases: ['H'] },
35
39
  {
36
40
  name: 'test-port',
@@ -77,12 +81,15 @@ module.exports = Command.extend({
77
81
  { name: 'test-page', type: String, description: 'Test page to invoke' },
78
82
  { name: 'path', type: 'Path', description: 'Reuse an existing build at given path.' },
79
83
  { name: 'query', type: String, description: 'A query string to append to the test page URL.' },
80
- { name: 'output-path', type: 'Path', aliases: ['o'] },
81
84
  ],
82
85
 
83
86
  init() {
84
87
  this._super.apply(this, arguments);
85
88
 
89
+ if (!this.isViteProject) {
90
+ this.availableOptions = this.availableOptions.concat(ClassicOptions);
91
+ }
92
+
86
93
  // Make sure Testem supports the Wasm MIME type:
87
94
  require('express').static.mime.define({ 'application/wasm': ['wasm'] });
88
95
 
@@ -162,6 +169,22 @@ module.exports = Command.extend({
162
169
  },
163
170
 
164
171
  async run(commandOptions) {
172
+ if (this.isViteProject) {
173
+ if (commandOptions.outputPath) {
174
+ return Promise.reject(
175
+ new SilentError('The `--output-path` option to `ember test` is not supported in Vite-based projects.')
176
+ );
177
+ }
178
+
179
+ if (commandOptions.server) {
180
+ return Promise.reject(
181
+ new SilentError(
182
+ 'The `--server` option to `ember test` is not supported in Vite-based projects. Please use the `start` script from package.json and visit `/tests` in the browser.'
183
+ )
184
+ );
185
+ }
186
+ }
187
+
165
188
  let hasBuild = !!commandOptions.path;
166
189
  let outputPath;
167
190
 
@@ -89,6 +89,13 @@ let Command = CoreObject.extend({
89
89
  */
90
90
  this.isWithinProject = this.project.isEmberCLIProject();
91
91
 
92
+ /**
93
+ * @final
94
+ * @property isViteProject
95
+ * @type Boolean
96
+ */
97
+ this.isViteProject = this.isWithinProject && this.project.isViteProject?.();
98
+
92
99
  /**
93
100
  * The name of the command.
94
101
  *
@@ -140,6 +140,10 @@ class Project {
140
140
  return false;
141
141
  };
142
142
 
143
+ NULL_PROJECT.isViteProject = function () {
144
+ return false;
145
+ };
146
+
143
147
  NULL_PROJECT.isEmberCLIAddon = function () {
144
148
  return false;
145
149
  };
@@ -168,7 +172,7 @@ class Project {
168
172
 
169
173
  /**
170
174
  Returns whether or not this is an Ember CLI project.
171
- This checks whether ember-cli is listed in devDependencies.
175
+ This checks whether ember-cli is listed in (dev)Dependencies.
172
176
 
173
177
  @private
174
178
  @method isEmberCLIProject
@@ -178,6 +182,18 @@ class Project {
178
182
  return (this.cli ? this.cli.npmPackage : 'ember-cli') in this.dependencies();
179
183
  }
180
184
 
185
+ /**
186
+ Returns whether this is a Vite-based project.
187
+ This checks whether @embroider/vite is listed in (dev)Dependencies.
188
+
189
+ @private
190
+ @method isViteProject
191
+ @return {Boolean} Whether this is a Vite project
192
+ */
193
+ isViteProject() {
194
+ return '@embroider/vite' in this.dependencies(); // This would preferably be `isClassicProject` as Vite is the default now, but it is tough to come up with a metric
195
+ }
196
+
181
197
  /**
182
198
  Returns whether or not this is an Ember CLI addon.
183
199
 
@@ -13,6 +13,7 @@ const npa = require('npm-package-arg');
13
13
  const lintFix = require('../utilities/lint-fix');
14
14
 
15
15
  const logger = require('heimdalljs-logger')('ember-cli:tasks:install-blueprint');
16
+ const { isExperimentEnabled } = require('@ember-tooling/blueprint-model/utilities/experiments');
16
17
 
17
18
  const NOT_FOUND_REGEXP = /npm ERR! 404 {2}'(\S+)' is not in the npm registry/;
18
19
 
@@ -61,6 +62,10 @@ class InstallBlueprintTask extends Task {
61
62
  name = name || 'app';
62
63
  logger.info(`Resolving blueprint "${name}" ...`);
63
64
 
65
+ if (isExperimentEnabled('VITE') && name === 'app') {
66
+ return Blueprint.load(path.dirname(require.resolve('@ember/app-blueprint')));
67
+ }
68
+
64
69
  let blueprint;
65
70
  try {
66
71
  blueprint = await this._lookupLocalBlueprint(name);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-cli",
3
- "version": "6.9.0-alpha.1",
3
+ "version": "6.9.0-alpha.2",
4
4
  "description": "Command line tool for developing ambitious ember.js apps",
5
5
  "keywords": [
6
6
  "app",
@@ -35,7 +35,7 @@
35
35
  "publishTag": "alpha"
36
36
  },
37
37
  "dependencies": {
38
- "@ember/app-blueprint": "6.9.0-alpha.1",
38
+ "@ember/app-blueprint": "~6.9.0-alpha.1",
39
39
  "@pnpm/find-workspace-dir": "^1000.1.0",
40
40
  "babel-remove-types": "^1.0.1",
41
41
  "broccoli": "^3.5.2",
@@ -118,10 +118,10 @@
118
118
  "watch-detector": "^1.0.2",
119
119
  "workerpool": "^9.2.0",
120
120
  "yam": "^1.0.0",
121
- "@ember-tooling/blueprint-blueprint": "0.2.0",
122
- "@ember-tooling/blueprint-model": "0.4.0",
123
- "@ember-tooling/classic-build-addon-blueprint": "6.9.0-alpha.1",
124
- "@ember-tooling/classic-build-app-blueprint": "6.9.0-alpha.1"
121
+ "@ember-tooling/blueprint-blueprint": "0.2.1",
122
+ "@ember-tooling/classic-build-addon-blueprint": "6.9.0-alpha.2",
123
+ "@ember-tooling/blueprint-model": "0.4.1",
124
+ "@ember-tooling/classic-build-app-blueprint": "6.9.0-alpha.2"
125
125
  },
126
126
  "devDependencies": {
127
127
  "broccoli-plugin": "^4.0.3",
@@ -134,7 +134,7 @@ module.exports = {
134
134
  * _ts_eslint.config.mjs is renamed to eslint.config.mjs
135
135
  */
136
136
  buildFileInfo(intoDir, templateVariables, file, commandOptions) {
137
- if (file.startsWith('_js_') || file.startsWith('_ts_')) {
137
+ if (file.includes('_js_') || file.includes('_ts_')) {
138
138
  let fileInfo = this._super.buildFileInfo.apply(this, arguments);
139
139
 
140
140
  if (file.includes('_js_')) {
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@ember-tooling/classic-build-addon-blueprint",
3
- "version": "6.9.0-alpha.1",
3
+ "version": "6.9.0-alpha.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ember-cli/ember-cli.git",
7
7
  "directory": "packages/addon-blueprint"
8
8
  },
9
+ "license": "MIT",
9
10
  "keywords": [
10
11
  "ember-blueprint"
11
12
  ],
@@ -7,13 +7,13 @@
7
7
 
8
8
  /**
9
9
  Setting `componentAuthoringFormat` to "strict" will force the blueprint generators to generate GJS
10
- or GTS files for the component and the component rendering test. "loose" is the default.
10
+ or GTS files for the component and the component rendering test. "strict" is the default.
11
11
  */
12
12
  "componentAuthoringFormat": <%= strict ? '"strict"' : '"loose"' %>,
13
13
 
14
14
  /**
15
15
  Setting `routeAuthoringFormat` to "strict" will force the blueprint generators to generate GJS
16
- or GTS templates for routes. "loose" is the default
16
+ or GTS templates for routes. "strict" is the default
17
17
  */
18
18
  "routeAuthoringFormat": <%= strict ? '"strict"' : '"loose"' %>
19
19
  }
@@ -60,7 +60,7 @@
60
60
  "broccoli-asset-rev": "^3.0.0",
61
61
  "concurrently": "^9.2.1",
62
62
  "ember-auto-import": "^2.10.0",
63
- "ember-cli": "~6.9.0-alpha.1",
63
+ "ember-cli": "~6.9.0-alpha.2",
64
64
  "ember-cli-app-version": "^7.0.0",
65
65
  "ember-cli-babel": "^8.2.0",
66
66
  "ember-cli-clean-css": "^3.0.0",
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@ember-tooling/classic-build-app-blueprint",
3
- "version": "6.9.0-alpha.1",
3
+ "version": "6.9.0-alpha.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ember-cli/ember-cli.git",
7
7
  "directory": "packages/app-blueprint"
8
8
  },
9
+ "license": "MIT",
9
10
  "keywords": [
10
11
  "ember-blueprint"
11
12
  ],
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@ember-tooling/blueprint-blueprint",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ember-cli/ember-cli.git",
7
7
  "directory": "packages/blueprint-blueprint"
8
8
  },
9
+ "license": "MIT",
9
10
  "keywords": [
10
11
  "ember-blueprint"
11
12
  ]
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@ember-tooling/blueprint-model",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ember-cli/ember-cli.git",
7
7
  "directory": "packages/blueprint-model"
8
8
  },
9
+ "license": "MIT",
9
10
  "dependencies": {
10
11
  "chalk": "^4.1.2",
11
12
  "diff": "^7.0.0",