For more details: The embroider roadmap
- See actively maintained demos:
- Additional Work Needed
- embroider-build/embroider#1744
| import fs from 'node:fs'; | |
| import path from 'node:path'; | |
| import { filesize } from 'filesize'; | |
| import { minify } from 'terser'; | |
| import { execa, execaCommand, $ } from 'execa'; | |
| import brotli from 'brotli'; | |
| const options = { | |
| parse: { | |
| html5_comments: false, |
For more details: The embroider roadmap
RFC#570: Background, motivation, reasoning.
Converting an addon to the v2/native format is described in detail here
NOTE: "v2 addons" are also known as "native packages", "native addons", "npm native", etc.
benefits tl;dr:
| import React from 'react'; | |
| export const Foo = <> | |
| test {expression + expression} test | |
| {[].map(item => { | |
| return <div>{item}</div> | |
| })} | |
| <div></div> |
| import Controller from '@ember/controller'; | |
| import { action } from '@ember/object'; | |
| import { inject as service } from '@ember/service'; | |
| export default class ApplicationController extends Controller { | |
| queryParams = ['test']; | |
| appName = 'Ember Twiddle'; | |
| @service router; |
| import Controller from '@ember/controller'; | |
| import { action } from '@ember/object'; | |
| import { tracked } from '@glimmer/tracking'; | |
| export default class ApplicationController extends Controller { | |
| @tracked records = freshArray(); | |
| @action addFirst() { | |
| log('add:first, expect one each log'); | |
| this.records = [{ id: this.records.length + 1 }, ...this.records ]; |
| import Controller from '@ember/controller'; | |
| export default class ApplicationController extends Controller { | |
| appName = 'Ember Twiddle'; | |
| } |