Automatic integration and configuration from the community.
See the Documentation.
This is a framework and ecosystem agnostic collection of recommended configurations, applied via automation, that is compatible with any kind of project, new and old.
Individual configurations may have conventions specific to a an ecosystem, but ember-apply
,
itself, can be used with Svelte, React, or
whatever you want. The tools provided by ember-apply
only require Node 16+.
Maybe most importantly, is that ember-apply
can be used for any tool that wishes
to use high-level project-management and transformation utilities.
See #Public API.
NOTE: this package is a slightly experimental and prone to some API or organizational changes -- but is committed to strictly following semver.
npx ember-apply <feature-name>
where <feature-name>
is one of the options under #Features
- Node 16 +
- ESM
npx ember-apply volta
Automates setting up volta in a project, monorepo or solorepo.
- root package.json defines node version
- if monorepo, all other packages extend from the root package.json
npx ember-apply tailwind
Automates the steps from Tailwind's installation docs
Known working capabilities:
- JIT
- Rebuilding during development
Assumptions
- entrypoint for your app is located at
app/index.html
- entrypoint for your tests is located at
tests/index.html
- tailwind files are placed in
config/tailwind/
npx ember-apply embroider
Automates the embroider migration from the classic ember build system for maximum-compatibility mode. See the Embroider docs
implementation tbd (pr's welcome!)
npx ember-apply ssr
Known working capabilities:
- tbd
when using a package name for the <feature-name>
, an ESM version of the package
will attempt to be loaded and used, invoking the default export.
npx ember-apply @scope/feature-name
Local scripts may also be used. An example of this is maybe in a private monorepo where some scripts or packages aren't published to npm.
npx ember-apply ../../path/to/some/script.js # ESM required
# or
npx ember-apply ../../path/to/some/script.mjs
- clone this repository
- create a
packages/<ecosystem>/<feature>index.js
file examples:packages/ember/tailwind/index.js
packages/sveltekit/tailwind/index.js
- have a function exported as the default export.
within this function, you may import form
ember-apply
to use any of the utility functions. the only argument passed to this function is the working directorynpx ember-apply
was invoked from. how the<your-applyable>
folder is managed is totally up to whomever implements and maintains that code.
JSCodeShift is used
ember-template-recast is used
posthtml is used
-
preset GOAL (tbd): be compatible with
npx apply
preset
does not provide codemodding tools, but it does provide basic pattern-based transforming utilities, so it's a solid option. It also does not have built-in support for template transforms.- currently,
preset
forces the install ofesbuild
which fails due to having the security featureignore-scripts
enabled, sopreset
is a non-option for folks who care about security. (or who don't mind adding an allow-list forpreset
)