Skip to content

Commit 78c3d0d

Browse files
committed
try vite
1 parent f50f4fe commit 78c3d0d

File tree

8 files changed

+144
-44
lines changed

8 files changed

+144
-44
lines changed

app/app.js

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
import Application from '@ember/application';
2+
import compatModules from '@embroider/core/entrypoint';
23
import Resolver from 'ember-resolver';
34
import loadInitializers from 'ember-load-initializers';
4-
import config from 'ember-api-docs/config/environment';
5+
import config from './config/environment';
6+
7+
let d = window.define;
8+
9+
for (const [name, module] of Object.entries(compatModules)) {
10+
d(name, function () {
11+
return module;
12+
});
13+
}
514

615
import './deprecation-workflow';
716

app/config/environment.js

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import loadConfigFromMeta from '@embroider/config-meta-loader';
2+
3+
export default loadConfigFromMeta('ember-api-docs');

app/index.html

+12-9
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,28 @@
11
<!DOCTYPE html>
2-
<html lang="en">
2+
<html>
33
<head>
44
<meta charset="utf-8">
5-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
5+
<title>AppTemplate</title>
6+
<meta name="description" content="">
67
<meta name="viewport" content="width=device-width, initial-scale=1">
7-
<link rel="shortcut icon" href="{{rootURL}}assets/images/favicon.png">
8-
<meta property="og:type" content="website">
98

109
{{content-for "head"}}
1110

12-
<link integrity="" rel="stylesheet" href="{{rootURL}}assets/vendor.css">
13-
<link integrity="" rel="stylesheet" href="{{rootURL}}assets/ember-api-docs.css">
14-
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600" rel="stylesheet">
11+
<link integrity="" rel="stylesheet" href="/@embroider/core/vendor.css">
12+
<link integrity="" rel="stylesheet" href="/assets/ember-api-docs.css">
1513

1614
{{content-for "head-footer"}}
1715
</head>
1816
<body>
1917
{{content-for "body"}}
2018

21-
<script src="{{rootURL}}assets/vendor.js"></script>
22-
<script src="{{rootURL}}assets/ember-api-docs.js"></script>
19+
<script src="/@embroider/core/vendor.js"></script>
20+
<script type="module">
21+
import Application from './app';
22+
import environment from './config/environment';
23+
24+
Application.create(environment.APP);
25+
</script>
2326

2427
{{content-for "body-footer"}}
2528
</body>

babel.config.cjs

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
let config;
2+
3+
// TODO - remove this once we have the better solution for injecting stage1 babel config into a real config file
4+
// this is needed because there are things (like ember-composible-helpers) that are now finding our babel config during
5+
// their stage1 build and historically they will never (99% of the time) have found any babel config.
6+
// we might need to keep something like this so that prebuild will never apply babel configs during stage1 i.e. a util
7+
// function that wraps your whole babel config
8+
if (
9+
process.env.EMBROIDER_PREBUILD ||
10+
process.env.EMBROIDER_TEST_SETUP_FORCE === 'classic'
11+
) {
12+
config = {};
13+
} else {
14+
config = require('./node_modules/.embroider/_babel_config_');
15+
}
16+
17+
module.exports = config;

ember-cli-build.js

+7-10
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
const EmberApp = require('ember-cli/lib/broccoli/ember-app');
44
const envIsProduction = process.env.EMBER_ENV === 'production';
5-
const premberUrls = require('./prember-urls');
65
const nodeSass = require('node-sass');
6+
const { maybeEmbroider } = require('@embroider/test-setup');
77

88
module.exports = function (defaults) {
99
let app = new EmberApp(defaults, {
@@ -55,14 +55,11 @@ module.exports = function (defaults) {
5555
},
5656
});
5757

58-
const { Webpack } = require('@embroider/webpack');
59-
const appTree = require('@embroider/compat').compatBuild(app, Webpack, {
60-
staticAddonTrees: true,
61-
staticAddonTestSupportTrees: true,
62-
staticHelpers: true,
63-
staticModifiers: true,
64-
staticComponents: true,
58+
return maybeEmbroider(app, {
59+
skipBabel: [
60+
{
61+
package: 'qunit',
62+
},
63+
],
6564
});
66-
67-
return require('prember').prerender(app, appTree);
6865
};

package.json

+7-4
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,11 @@
2929
"devDependencies": {
3030
"@ember/optional-features": "^2.0.0",
3131
"@ember/test-helpers": "^2.6.0",
32-
"@embroider/compat": "^3.4.3",
33-
"@embroider/core": "^3.4.3",
34-
"@embroider/webpack": "^3.2.1",
32+
"@embroider/compat": "3.5.7-unstable.324f52a",
33+
"@embroider/config-meta-loader": "0.0.1-unstable.324f52a",
34+
"@embroider/core": "3.4.15-unstable.324f52a",
35+
"@embroider/test-setup": "4.0.1-unstable.324f52a",
36+
"@embroider/vite": "0.2.1-unstable.324f52a",
3537
"@glimmer/component": "^1.1.2",
3638
"@glimmer/tracking": "^1.1.2",
3739
"@glint/core": "^0.9.7",
@@ -79,6 +81,7 @@
7981
"ember-cli-document-title-northm": "^1.0.3",
8082
"ember-cli-fastboot": "^4.1.5",
8183
"ember-cli-htmlbars": "^6.1.1",
84+
"@rollup/plugin-babel": "^6.0.4",
8285
"ember-cli-inject-live-reload": "^2.1.0",
8386
"ember-cli-meta-tags": "^7.0.0",
8487
"ember-cli-sass": "^10.0.1",
@@ -87,7 +90,6 @@
8790
"ember-composable-helpers": "^3.1.1",
8891
"ember-concurrency": "^2.3.7",
8992
"ember-data": "~3.28.6",
90-
"ember-data-fastboot": "https://github.com/cardstack/ember-data-fastboot#6e6fb8bbf0b405ae174160cc1e4833c5582f68cd",
9193
"ember-export-application-global": "^2.0.1",
9294
"ember-fetch": "^8.1.1",
9395
"ember-inflector": "^4.0.3",
@@ -143,6 +145,7 @@
143145
"testem": "^3.10.0",
144146
"typescript": "^4.9.3",
145147
"webpack": "^5.90.0"
148+
"vite": "^5.3.4",
146149
},
147150
"engines": {
148151
"node": "16.* || 18.* || 20.*",

tests/index.html

+15-20
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,21 @@
11
<!DOCTYPE html>
22
<html>
33
<head>
4-
<meta charset="utf-8">
5-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
6-
<title>EmberApiDocs Tests</title>
7-
<meta name="description" content="">
8-
<meta name="viewport" content="width=device-width, initial-scale=1">
4+
<meta charset="utf-8" />
5+
<title>AppTemplate Tests</title>
6+
<meta name="description" content="" />
7+
<meta name="viewport" content="width=device-width, initial-scale=1" />
98

10-
{{content-for "head"}}
11-
{{content-for "test-head"}}
9+
{{content-for "head"}} {{content-for "test-head"}}
1210

13-
<link rel="stylesheet" href="{{rootURL}}assets/vendor.css">
14-
<link rel="stylesheet" href="{{rootURL}}assets/ember-api-docs.css">
15-
<link rel="stylesheet" href="{{rootURL}}assets/test-support.css">
11+
<link rel="stylesheet" href="/@embroider/core/vendor.css" />
12+
<link rel="stylesheet" href="/assets/ember-api-docs.css" />
13+
<link rel="stylesheet" href="/@embroider/core/test-support.css" />
1614

17-
{{content-for "head-footer"}}
18-
{{content-for "test-head-footer"}}
15+
{{content-for "head-footer"}} {{content-for "test-head-footer"}}
1916
</head>
2017
<body>
21-
{{content-for "body"}}
22-
{{content-for "test-body"}}
18+
{{content-for "body"}} {{content-for "test-body"}}
2319

2420
<div id="qunit"></div>
2521
<div id="qunit-fixture">
@@ -29,12 +25,11 @@
2925
</div>
3026

3127
<script src="/testem.js" integrity="" data-embroider-ignore></script>
32-
<script src="{{rootURL}}assets/vendor.js"></script>
33-
<script src="{{rootURL}}assets/test-support.js"></script>
34-
<script src="{{rootURL}}assets/ember-api-docs.js"></script>
35-
<script src="{{rootURL}}assets/tests.js"></script>
28+
<script src="/@embroider/core/vendor.js"></script>
29+
<script src="/@embroider/core/test-support.js"></script>
30+
<script src="/@embroider/core/entrypoint" type="module"></script>
31+
<script src="/@embroider/core/test-entrypoint" type="module"></script>
3632

37-
{{content-for "body-footer"}}
38-
{{content-for "test-body-footer"}}
33+
{{content-for "body-footer"}} {{content-for "test-body-footer"}}
3934
</body>
4035
</html>

vite.config.mjs

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import { defineConfig } from 'vite';
2+
import {
3+
resolver,
4+
hbs,
5+
scripts,
6+
templateTag,
7+
optimizeDeps,
8+
compatPrebuild,
9+
assets,
10+
contentFor,
11+
} from '@embroider/vite';
12+
import { resolve } from 'path';
13+
import { babel } from '@rollup/plugin-babel';
14+
15+
const root = 'tmp/rewritten-app';
16+
const extensions = [
17+
'.mjs',
18+
'.gjs',
19+
'.js',
20+
'.mts',
21+
'.gts',
22+
'.ts',
23+
'.hbs',
24+
'.json',
25+
];
26+
27+
export default defineConfig(({ mode }) => {
28+
return {
29+
root,
30+
cacheDir: resolve('node_modules', '.vite'),
31+
resolve: {
32+
extensions,
33+
},
34+
plugins: [
35+
hbs(),
36+
templateTag(),
37+
scripts(),
38+
resolver(),
39+
compatPrebuild(),
40+
assets(),
41+
contentFor(),
42+
43+
babel({
44+
babelHelpers: 'runtime',
45+
extensions,
46+
}),
47+
],
48+
optimizeDeps: optimizeDeps(),
49+
publicDir: resolve(process.cwd(), 'public'),
50+
server: {
51+
port: 4200,
52+
watch: {
53+
ignored: ['!**/tmp/rewritten-app/**'],
54+
},
55+
},
56+
build: {
57+
outDir: resolve(process.cwd(), 'dist'),
58+
rollupOptions: {
59+
input: {
60+
main: resolve(root, 'index.html'),
61+
...(shouldBuildTests(mode)
62+
? { tests: resolve(root, 'tests/index.html') }
63+
: undefined),
64+
},
65+
},
66+
},
67+
};
68+
});
69+
70+
function shouldBuildTests(mode) {
71+
return false;
72+
return mode !== 'production' || process.env.FORCE_BUILD_TESTS;
73+
}

0 commit comments

Comments
 (0)