babel.config.cjs
import { scopedCSS } from 'ember-scoped-css/babel';
const {
babelCompatSupport,
templateCompatSupport,
} = require('@embroider/compat/babel');
module.exports = {
plugins: [
[
'@babel/plugin-transform-typescript',
{
allExtensions: true,
onlyRemoveTypeImports: true,
allowDeclareFields: true,
},
],
scopedCSS(),
[
'babel-plugin-ember-template-compilation',
{
compilerPath: 'ember-source/dist/ember-template-compiler.js',
enableLegacyModules: [
'ember-cli-htmlbars',
'ember-cli-htmlbars-inline-precompile',
'htmlbars-inline-precompile',
],
transforms: [...templateCompatSupport(), scopedCSS()],
},
],
[
'module:decorator-transforms',
{
runtime: {
import: require.resolve('decorator-transforms/runtime-esm'),
},
},
],
[
'@babel/plugin-transform-runtime',
{
absoluteRuntime: __dirname,
useESModules: true,
regenerator: false,
},
],
...babelCompatSupport(),
],
generatorOpts: {
compact: false,
},
};
vite.config.mjs
import { defineConfig } from 'vite';
import { extensions, classicEmberSupport, ember } from '@embroider/vite';
import { babel } from '@rollup/plugin-babel';
import { scopedCSS } from 'ember-scoped-css/vite';
export default defineConfig({
plugins: [
classicEmberSupport(),
ember(),
// extra plugins here
scopedCSS(),
babel({
babelHelpers: 'runtime',
extensions,
}),
],
});