forked from codesandbox/codesandbox-client
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathangular.ts
More file actions
125 lines (102 loc) · 3.14 KB
/
angular.ts
File metadata and controls
125 lines (102 loc) · 3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import { absolute, join } from '../utils/path';
import Template, { ParsedConfigurationFiles } from './template';
import configurations from './configuration';
import { decorateSelector } from '../utils/decorate-selector';
function getAngularCLIEntries(parsed) {
const entries = [];
if (parsed) {
const app = parsed.apps && parsed.apps[0];
if (app && app.root && app.main) {
entries.push(absolute(join(app.root, app.main)));
}
}
return entries;
}
function getAngularJSONEntries(parsed) {
const entries = [];
if (parsed) {
const { defaultProject } = parsed;
const project = parsed.projects[defaultProject];
const { build } = project.architect;
if (build.options.main) {
entries.push(absolute(join(project.root, build.options.main)));
}
}
return entries;
}
function getAngularCLIHTMLEntry(parsed) {
if (parsed) {
const app = parsed.apps && parsed.apps[0];
if (app && app.root && app.index) {
return [absolute(join(app.root, app.index))];
}
}
return [];
}
function getAngularJSONHTMLEntry(parsed) {
if (parsed) {
const { defaultProject } = parsed;
const project = parsed.projects[defaultProject];
const { build } = project.architect;
if (build && project.root != null && build.options && build.options.index) {
return [absolute(join(project.root, build.options.index))];
}
}
return [];
}
class AngularTemplate extends Template {
/**
* Override entry file because of angular-cli
*/
getEntries(configurationFiles: ParsedConfigurationFiles): Array<string> {
let entries = [];
if (!configurationFiles['angular-config'].generated) {
const { parsed } = configurationFiles['angular-config'];
entries = entries.concat(getAngularJSONEntries(parsed));
} else {
const { parsed } = configurationFiles['angular-cli'];
entries = entries.concat(getAngularCLIEntries(parsed));
}
if (
configurationFiles.package.parsed &&
configurationFiles.package.parsed.main
) {
entries.push(absolute(configurationFiles.package.parsed.main));
}
entries.push('/src/main.ts');
entries.push('/main.ts');
return entries;
}
getHTMLEntries(configurationFiles: ParsedConfigurationFiles): Array<string> {
let entries = [];
if (!configurationFiles['angular-config'].generated) {
const { parsed } = configurationFiles['angular-config'];
entries = entries.concat(getAngularJSONHTMLEntry(parsed));
} else if (configurationFiles['angular-cli']) {
const { parsed } = configurationFiles['angular-cli'];
entries = entries.concat(getAngularCLIHTMLEntry(parsed));
}
entries.push('/public/index.html');
entries.push('/index.html');
return entries;
}
}
export default new AngularTemplate(
'angular-cli',
'Angular',
'https://github.com/angular/angular',
'angular',
decorateSelector(() => '#DD0031'),
{
extraConfigurations: {
'/.angular-cli.json': configurations.angularCli,
'/angular.json': configurations.angularJSON,
},
netlify: false,
isTypescript: true,
distDir: 'dist',
showOnHomePage: true,
popular: true,
main: true,
}
);