{"id":15015944,"url":"https://github.com/nullvoxpopuli/ember-apply","last_synced_at":"2025-04-05T05:10:14.170Z","repository":{"id":36993404,"uuid":"444935915","full_name":"NullVoxPopuli/ember-apply","owner":"NullVoxPopuli","description":"Automatic integration and configuration from the EmberJS community","archived":false,"fork":false,"pushed_at":"2025-03-31T03:26:02.000Z","size":2826,"stargazers_count":38,"open_issues_count":27,"forks_count":9,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-31T04:25:51.326Z","etag":null,"topics":["automation","hacktoberfest","monorepo","nodejs"],"latest_commit_sha":null,"homepage":"https://ember-apply.pages.dev","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NullVoxPopuli.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-05T20:07:05.000Z","updated_at":"2025-03-25T21:00:43.000Z","dependencies_parsed_at":"2023-11-19T15:36:09.884Z","dependency_job_id":"db0b8e71-fae9-4119-a671-5ba2c8a5de85","html_url":"https://github.com/NullVoxPopuli/ember-apply","commit_stats":{"total_commits":841,"total_committers":14,"mean_commits":60.07142857142857,"dds":0.629013079667063,"last_synced_commit":"59df85d38ac7166b26dd696770c8bb94d64ccb65"},"previous_names":[],"tags_count":165,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NullVoxPopuli%2Fember-apply","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NullVoxPopuli%2Fember-apply/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NullVoxPopuli%2Fember-apply/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NullVoxPopuli%2Fember-apply/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NullVoxPopuli","download_url":"https://codeload.github.com/NullVoxPopuli/ember-apply/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247289429,"owners_count":20914464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","hacktoberfest","monorepo","nodejs"],"created_at":"2024-09-24T19:48:11.523Z","updated_at":"2025-04-05T05:10:14.156Z","avatar_url":"https://github.com/NullVoxPopuli.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ember-apply\n[![npm version](https://badge.fury.io/js/ember-apply.svg)](https://badge.fury.io/js/ember-apply)\n[![CI](https://github.com/NullVoxPopuli/ember-apply/actions/workflows/ci.yml/badge.svg)](https://github.com/NullVoxPopuli/ember-apply/actions/workflows/ci.yml)\n\n\n_Automatic integration and configuration from the community._\n\nSee the [Documentation](https://ember-apply.pages.dev/modules).\n\n\nThis is a framework and ecosystem agnostic collection of recommended configurations,\napplied via automation, that is compatible with any kind of project, new and old.\n\nIndividual configurations may have conventions specific to a an ecosystem, but `ember-apply`,\nitself, can be used with [Svelte](http://svelte.dev/), [React](https://reactjs.org/), or\nwhatever you want. The tools provided by `ember-apply` only require Node 16+.\n\nMaybe most importantly, is that `ember-apply` can be used for any tool that wishes\nto use high-level project-management and transformation utilities.\nSee [#Public API](https://ember-apply.pages.dev/modules).\n\n\n![npm (tag)](https://img.shields.io/npm/v/@ember-apply/tailwind/latest?label=%40ember-apply%2Ftailwind)\n![npm (tag)](https://img.shields.io/npm/v/@ember-apply/embroider/latest?label=%40ember-apply%2Fembroider)\n\n\n_NOTE:_ this package is a slightly experimental and prone to some API or organizational changes -- but is committed to strictly following semver.\n\n## Usage\n\n```shell\nnpx ember-apply \u003cfeature-name\u003e\n```\n\nwhere `\u003cfeature-name\u003e` is one of the options under [#Features](#features)\n\n## Compatibility\n\n* Node 16 +\n* ESM\n\n## Internal applyables\n\n### `typescript`\n\n```shell\nnpx ember-apply typescript\n```\n\n_Automates setting up TypeScript for your V1 Addon or App._\n- correct dependencies\n- correct types \n- correct configs\n\n### `volta`\n\n```shell\nnpx ember-apply volta\n```\n\n_Automates setting up [volta](https://volta.sh/) in a project, monorepo or solorepo_.\n- root package.json defines node version\n- if monorepo, all other packages extend from the root package.json\n\n### `tailwind`\n\n```shell\nnpx ember-apply tailwind\n```\n\n_Automates the steps from [Tailwind's installation docs](https://tailwindcss.com/docs/installation)_\n\nKnown working capabilities:\n - JIT\n - Rebuilding during development\n\n**Assumptions**\n- entrypoint for your app is located at `app/index.html`\n- entrypoint for your tests is located at `tests/index.html`\n- tailwind files are placed in `config/tailwind/`\n\n### `tailwind-webpack`\n\n```shell\nnpx ember-apply tailwind-webpack\n```\n\n_Automates the official [Tailwind + Ember.js guide](https://tailwindcss.com/docs/guides/emberjs)_\n\n- Instead of placing `postcss.config.js` and `tailwind.config.js` into the project root, it places them to `config/` directory.\n- Does not need any special command for building tailwind styles they will be built (and watched) together with `npm start`.\n\n### `tailwind3-vite`\n\n```shell\nnpx ember-apply tailwind3-vite\n```\n\n_Automates the official [Tailwind + Vite guide](https://v3.tailwindcss.com/docs/guides/vite) so that it's compatible with [@embroider/app-blueprint](https://github.com/embroider-build/app-blueprint)_\n\n### `tailwind4-vite`\n\n```shell\nnpx ember-apply tailwind4-vite\n```\n\n_Automates the official [Tailwind + Vite guide](https://tailwindcss.com/docs/installation/using-vite) so that it's compatible with [@embroider/app-blueprint](https://github.com/embroider-build/app-blueprint)_\n\n### `embroider`\n\n```shell\nnpx ember-apply embroider\n```\n\n_Automates the embroider migration from the classic ember build system for maximum-compatibility mode_.\nSee the [Embroider docs](https://github.com/embroider-build/embroider/)\n\n### `ssr`\n\nimplementation tbd (pr's welcome!)\n\n```shell\nnpx ember-apply ssr\n```\n\nKnown working capabilities:\n - tbd\n\n## External applyables\n\n- [apply-gts](https://github.com/tcarterjr/apply-gts) - Automates the steps for adding gjs/gts \u0026 Glint to an existing Ember app.\n\n## Any package with as ESM with a default export\n\nwhen using a package name for the `\u003cfeature-name\u003e`, an ESM version of the package\nwill attempt to be loaded and used, invoking the default export.\n\n```shell\nnpx ember-apply @scope/feature-name\n```\n\nLocal scripts may also be used. An example of this is maybe in a private monorepo\nwhere some scripts or packages aren't published to npm.\n\n```shell\nnpx ember-apply ../../path/to/some/script.js # ESM required\n# or\nnpx ember-apply ../../path/to/some/script.mjs\n```\n\n## Adding a new applyable to this repository\n\n- clone this repository\n- create a `packages/\u003cecosystem\u003e/\u003cfeature\u003e/index.js` file\n  examples:\n   - `packages/ember/tailwind/index.js`\n   - `packages/sveltekit/tailwind/index.js`\n- have a function exported as the default export.\n  within this function, you may import form `ember-apply` to use any of the utility functions.\n  the only argument passed to this function is the working directory `npx ember-apply` was invoked from.\n  how the `\u003cyour-applyable\u003e` folder is managed is totally up to whomever implements and maintains that code.\n\n### For Transforming JS\n\n[JSCodeShift](https://github.com/facebook/jscodeshift) is used\n\n### For Transforming Ember Templates\n\n[ember-template-recast](https://github.com/ember-template-lint/ember-template-recast) is used\n\n### For Transforming HTML\n\n[posthtml](https://github.com/posthtml/posthtml) is used\n\n\n## Related Projects\n\n- [preset](https://github.com/preset/preset)\n    GOAL (tbd): be compatible with `npx apply`\n\n    - `preset` does not provide codemodding tools, but\n      it does provide basic pattern-based transforming\n      utilities, so it's a solid option. It also does\n      not have built-in support for template transforms.\n    - currently, `preset` forces the install of `esbuild` which fails due to having the security feature `ignore-scripts` enabled, so `preset` is a non-option for folks who care\n      about security. (or who don't mind adding an allow-list for `preset`)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnullvoxpopuli%2Fember-apply","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnullvoxpopuli%2Fember-apply","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnullvoxpopuli%2Fember-apply/lists"}