https://github.com/emberjs/ember-edition-utils
https://github.com/emberjs/ember-edition-utils
Last synced: 9 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/emberjs/ember-edition-utils
- Owner: emberjs
- License: mit
- Created: 2019-09-14T22:44:50.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2022-12-05T01:59:12.000Z (over 3 years ago)
- Last Synced: 2024-10-29T14:44:08.269Z (over 1 year ago)
- Language: JavaScript
- Size: 246 KB
- Stars: 5
- Watchers: 9
- Forks: 2
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# @ember/edition-utils
This package is the officially supported mechanism for declaring and detecting
the specific edition that a given application is using.
## Usage
### Declaring Edition
In order to declare which edition of Ember your application (or addon's test bed application) is compatible with
you would update your `package.json` to include the following:
```js
{
"name": "project-name",
// ...snip
"ember": {
"edition": "octane"
}
}
```
### Detecting Edition
In order to detect if the currently running application is using _at least_ a
specific edition, you would call `has`. This will most commonly be used from
within various addon's to determine which blueprint code to run. For example:
```js
const { has } = require('@ember/edition-utils');
if (has('octane', this.project.root)) {
// do octane stuff
} else {
// do classic mode stuff
}
```
### Valid use of the edition value
The edition flag should only be used by addons to determine what blueprint
output to generate and to provide helpful warnings (or errors) at build time.
This does **not** allow for an addon to detect the edition configuration and
change its fundamental implementation. This is quite intentional!
Instead, addons should rely on feature detection techniques like the following
to alter implementations:
* Check to see if given methods/properties exist (this is essentially like how
browser polyfills work)
* Use a tool like
[ember-compatibility-helpers](https://github.com/pzuraq/ember-compatibility-helpers)'s
`gte` method (e.g. `if (gte('ember-source', '3.14.0')) { }`)
* Use
[@ember/optional-features](https://github.com/emberjs/ember-optional-features)'s
[`isFeatureEnabled`
method](https://github.com/emberjs/ember-optional-features#at-build-time-from-an-addon)
## License
This project is licensed under the [MIT License](LICENSE.md).