Skip to content

Boilerplate Sucks 👎🏽

We're re-aligning our packages into a new streamlined installation and setup experience.
Below you'll find the current boilerplate heavy setup.

Curious? Read the RFC

Configuration

WarpDrive is highly configurable. The library is designed as a series of small packages with clear interface-driven boundaries between each other and brought together by configuration.

Below, we detail the installation for the most common configurations.


interchangable components talk with each otherinterchangable components talk with each other

⚠️ Caution

WarpDrive packages follow lockstep: dependencies and peer-dependencies between WarpDrive packages are version-locked at the time of publish.

We find this means its best to use exact versions instead of ranges as all WarpDrive packages should be upgraded together at once.

All of the installation commands below pin the version for this reason.

Installation

Install the core packages:

💡 TIP

WarpDrive uses npm channel tags to simplify installation.

  • @lts is the latest LTS release
  • @latest is the latest stable release
  • @beta is the latest beta release
  • @canary is the latest canary release

Replace @latest in the commands below with the desired channel if needed.

sh
pnpm add -E \
  @warp-drive/core-types@latest \
  @warp-drive/build-config@latest \
  @warp-drive/schema-record@latest \
  @ember-data/store@latest \
  @ember-data/request@latest \
  @ember-data/request-utils@latest \
  @ember-data/graph@latest \
  @ember-data/json-api@latest;
sh
npm add -E \
  @warp-drive/core-types@latest \
  @warp-drive/build-config@latest \
  @warp-drive/schema-record@latest \
  @ember-data/store@latest \
  @ember-data/request@latest \
  @ember-data/request-utils@latest \
  @ember-data/graph@latest \
  @ember-data/json-api@latest;
sh
yarn add -E \
  @warp-drive/core-types@latest \
  @warp-drive/build-config@latest \
  @warp-drive/schema-record@latest \
  @ember-data/store@latest \
  @ember-data/request@latest \
  @ember-data/request-utils@latest \
  @ember-data/graph@latest \
  @ember-data/json-api@latest;
sh
bun add --exact \
  @warp-drive/core-types@latest \
  @warp-drive/build-config@latest \
  @warp-drive/schema-record@latest \
  @ember-data/store@latest \
  @ember-data/request@latest \
  @ember-data/request-utils@latest \
  @ember-data/graph@latest \
  @ember-data/json-api@latest;

Optionally, install the ESLint plugin eslint-plugin-warp-drive

sh
pnpm add -E eslint-plugin-warp-drive@latest
sh
npm add -E eslint-plugin-warp-drive@latest
sh
yarn add -E eslint-plugin-warp-drive@latest
sh
bun add --exact eslint-plugin-warp-drive@latest

🐹 For Ember.js Only

Install @warp-drive/ember

sh
pnpm add -E @warp-drive/ember@latest
sh
npm add -E @warp-drive/ember@latest
sh
yarn add -E @warp-drive/ember@latest
sh
bun add --exact @warp-drive/ember@latest

Optionally, for Ember Inspector support install @ember-data/debug

sh
pnpm add -E @ember-data/debug@latest
sh
npm add -E @ember-data/debug@latest
sh
yarn add-E @ember-data/debug@latest
sh
bun add --exact @ember-data/debug@latest

Optionally, to use the legacy @ember-data/model experience (via Model or via SchemaRecord) install the following packages:

sh
pnpm add -E \
  @ember-data/model@latest \
  @ember-data/legacy-compat@latest;
sh
npm add -E \
  @ember-data/model@latest \
  @ember-data/legacy-compat@latest;
sh
yarn add -E \
  @ember-data/model@latest \
  @ember-data/legacy-compat@latest;
sh
bun add --exact \
  @ember-data/model@latest \
  @ember-data/legacy-compat@latest;

Optionally, to use the legacy Adapter/Serializer experience, install the following packages:

sh
pnpm add -E \
  @ember-data/adapter@latest \
  @ember-data/serializer@latest \
  @ember-data/legacy-compat@latest;
sh
npm add -E \
  @ember-data/adapter@latest \
  @ember-data/serializer@latest \
  @ember-data/legacy-compat@latest;
sh
yarn add -E \
  @ember-data/adapter@latest \
  @ember-data/serializer@latest \
  @ember-data/legacy-compat@latest;
sh
bun add --exact \
  @ember-data/adapter@latest \
  @ember-data/serializer@latest \
  @ember-data/legacy-compat@latest;

Other Packages

Install @ember-data/rest for utilities for working with requests that follow common REST API patterns.

sh
pnpm add -E @ember-data/rest@latest
sh
npm add -E @ember-data/rest@latest
sh
yarn add -E @ember-data/rest@latest
sh
bun add --exact @ember-data/rest@latest

Install @ember-data/active-record for utilities for working with requests that follow the rails ActiveRecord structure.

sh
pnpm add -E @ember-data/active-record@latest
sh
npm add -E @ember-data/active-record@latest
sh
yarn add -E @ember-data/active-record@latest
sh
bun add --exact @ember-data/active-record@latest

Install @warp-drive-experiments for bleeding edge unstable features we're prototyping like SharedWorker and PersistedCache.

sh
pnpm add -E @warp-drive-experiments@latest
sh
npm add -E @warp-drive-experiments@latest
sh
yarn add -E @warp-drive-experiments@latest
sh
bun add --exact @warp-drive-experiments@latest

What about the ember-data package?

The ember-data package declares the core and ember.js packages including all legacy packages as its dependencies. It configures and automatically provides a store service configured for the maximal legacy experience,

This auto-bundled experience sounds useful, however, this approach works poorly with vite, typescript and peer dependency grouping.

If you're curious, the exact list of packages to replicate ember-data including all deprecations is:

sh
pnpm add -E \
  @warp-drive/core-types@latest \
  @warp-drive/build-config@latest \
  @ember-data/store@latest \
  @ember-data/request@latest \
  @ember-data/request-utils@latest \
  @ember-data/graph@latest \
  @ember-data/json-api@latest \
  @ember-data/adapter \
  @ember-data/debug \
  @ember-data/legacy-compat \
  @ember-data/model \
  @ember-data/serializer \
  @embroider/macros \
  @ember-data/tracking \
  @warp-drive/ember;
sh
npm add -E \
  @warp-drive/core-types@latest \
  @warp-drive/build-config@latest \
  @ember-data/store@latest \
  @ember-data/request@latest \
  @ember-data/request-utils@latest \
  @ember-data/graph@latest \
  @ember-data/json-api@latest \
  @ember-data/adapter \
  @ember-data/debug \
  @ember-data/legacy-compat \
  @ember-data/model \
  @ember-data/serializer \
  @embroider/macros \
  @ember-data/tracking \
  @warp-drive/ember;
sh
yarn add -E \
  @warp-drive/core-types@latest \
  @warp-drive/build-config@latest \
  @ember-data/store@latest \
  @ember-data/request@latest \
  @ember-data/request-utils@latest \
  @ember-data/graph@latest \
  @ember-data/json-api@latest \
  @ember-data/adapter \
  @ember-data/debug \
  @ember-data/legacy-compat \
  @ember-data/model \
  @ember-data/serializer \
  @embroider/macros \
  @ember-data/tracking \
  @warp-drive/ember;
sh
bun add --exact \
  @warp-drive/core-types@latest \
  @warp-drive/build-config@latest \
  @ember-data/store@latest \
  @ember-data/request@latest \
  @ember-data/request-utils@latest \
  @ember-data/graph@latest \
  @ember-data/json-api@latest \
  @ember-data/adapter \
  @ember-data/debug \
  @ember-data/legacy-compat \
  @ember-data/model \
  @ember-data/serializer \
  @embroider/macros \
  @ember-data/tracking \
  @warp-drive/ember;

Released under the MIT License.