Skip to content

Commit 5cd1c17

Browse files
fix: bundle and expose index.pug (#34)
1 parent 966d857 commit 5cd1c17

File tree

8 files changed

+378
-52
lines changed

8 files changed

+378
-52
lines changed

package-lock.json

Lines changed: 335 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,14 @@
7272
"@angular/compiler-cli": "^6.1.0-beta.3",
7373
"ajv": "^6.5.2",
7474
"chalk": "^2.4.1",
75+
"consolidate": "^0.15.1",
7576
"favicons": "^5.1.1",
7677
"fuse-box": "^3.3.0",
7778
"iltorb": "^2.3.2",
7879
"inquirer": "^6.0.0",
7980
"ng2-fused": "^0.5.1",
8081
"npm": "^6.1.0",
82+
"pug": "^2.0.3",
8183
"rxjs": "^6.2.1",
8284
"ts-node": "^7.0.0",
8385
"tslint": "^5.10.0",

src/commands/serve.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import {
77
QuantumPlugin,
88
RawPlugin,
99
SassPlugin,
10-
EnvPlugin
10+
EnvPlugin,
11+
WebIndexPlugin
1112
} from 'fuse-box'
1213
import { resolve } from 'path'
1314
import { NgProdPlugin } from '../fusebox/ng.prod.plugin'
@@ -80,6 +81,18 @@ function serve(isProdBuild = false) {
8081
isAotBuild && NgAotFactoryPlugin(),
8182
Ng2TemplatePlugin(),
8283
['*.component.html', RawPlugin()],
84+
WebIndexPlugin({
85+
title: 'test',
86+
bundles: ['app', 'vendor'],
87+
path: 'js',
88+
target: '../index.html',
89+
template: resolve('src/app/index.pug'),
90+
engine: 'pug',
91+
locals: {
92+
pageTitle: 'FUSING ANGULAR',
93+
isLocalDev: !isProdBuild
94+
}
95+
}),
8396
NgProdPlugin({ enabled: isProdBuild }),
8497
NgPolyfillPlugin(),
8598
[
@@ -92,6 +105,7 @@ function serve(isProdBuild = false) {
92105
} as any),
93106
RawPlugin()
94107
],
108+
95109
isProdBuild &&
96110
QuantumPlugin({
97111
warnings: false,

src/generators/angular-core.gen.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import {
44
appRoutingModuleTemplate,
55
appSharedModuleTemplate,
66
appComponentCssTemplate,
7-
appComponentHtmlTemplate
7+
appComponentHtmlTemplate,
8+
appIndex
89
} from '../templates/core/app'
910
import { writeFile_, mkDirAndContinueIfExists_ } from '../utilities/rx-fs'
1011
import { forkJoin } from 'rxjs'
@@ -57,7 +58,8 @@ export function generateCoreAngularApp(projectDir: string, universal = true) {
5758
),
5859
writeFile_(`${baseDir}/app.component.ts`, appComponentTemplate),
5960
writeFile_(`${baseDir}/app.component.css`, appComponentCssTemplate), // TODO: write component generator function instead
60-
writeFile_(`${baseDir}/app.component.html`, appComponentHtmlTemplate)
61+
writeFile_(`${baseDir}/app.component.html`, appComponentHtmlTemplate),
62+
writeFile_(`${baseDir}/index.pug`, appIndex)
6163
])
6264
),
6365
flatMap(() =>

src/templates/core/app/app.component.css.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// apply global styles here
1+
/* apply global styles here */
22

33
app-root {
44

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
doctype html
2+
html(lang="en")
3+
head
4+
title= pageTitle
5+
base(href="/")
6+
meta(charset="utf-8")
7+
meta(name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0")
8+
body
9+
app-root
10+
| $bundles
11+
if isLocalDev
12+
script(src="/reload/reload.js")

src/templates/core/app/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import * as appRoutingModuleTemplate from './app.routing.module.ts.txt'
55
import * as appComponentCssTemplate from './app.component.css.txt'
66
import * as appComponentHtmlTemplate from './app.component.html.txt'
77
import * as homeComponentTemplate from './home.component.ts.txt'
8+
import * as appIndex from './index.pug.txt'
89

910
export {
1011
appModuleTemplate,
@@ -13,5 +14,6 @@ export {
1314
appRoutingModuleTemplate,
1415
homeComponentTemplate,
1516
appComponentCssTemplate,
16-
appComponentHtmlTemplate
17+
appComponentHtmlTemplate,
18+
appIndex
1719
}

src/templates/core/server/server.app.ts.txt

Lines changed: 6 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as cookieParser from 'cookie-parser'
33
import { resolve } from 'path'
44
import { ngExpressEngine } from '@nguniversal/express-engine'
55
import { AppServerModule } from './server.angular.module'
6-
import { stat, writeFile, createReadStream } from 'fs'
6+
import { stat, createReadStream } from 'fs'
77

88
const environment = JSON.parse(process.env.FUSING_ANGULAR || '{}')
99
const isLocalDevelopmentServer = environment.name === 'DEVELOPMENT'
@@ -25,6 +25,7 @@ expressApp.use(cookieParser())
2525
expressApp.set('x-powered-by', false)
2626
expressApp.set('etag', false)
2727
expressApp.set('view engine', 'html')
28+
expressApp.set('views', publicDir)
2829

2930
expressApp.engine('html', ngExpressEngine({ bootstrap: AppServerModule }))
3031

@@ -76,42 +77,11 @@ expressApp.get('/js**', (req, res) => {
7677
}
7778
})
7879

79-
const virtualIndex = (req: express.Request,
80-
res: express.Response, document: string, path = `${publicDir}/index.html`) => {
81-
82-
const resolvedPath = resolve(path)
83-
stat(resolvedPath, (err, stats) => {
84-
if (err) {
85-
writeFile(resolvedPath, '', err => {
86-
virtualIndex(req, res, document, path)
87-
})
88-
} else {
89-
res.render(resolvedPath, {
90-
req,
91-
res,
92-
document
93-
})
94-
}
95-
})
96-
}
97-
9880
expressApp.get('**', (req, res) => {
99-
const document = `<!doctype html>
100-
<html lang="en">
101-
<head>
102-
<meta charset="utf-8">
103-
<title>Fusing Angular</title>
104-
<base href="/">
105-
<meta name="viewport" content="width=device-width, initial-scale=1">
106-
</head>
107-
<body>
108-
<app-root></app-root>
109-
<script src="/js/vendor.js"></script>
110-
<script src="/js/app.js"></script>
111-
${isLocalDevelopmentServer ? '<script src="/reload/reload.js"></script>' : ''}
112-
</body>
113-
</html>`
114-
virtualIndex(req, res, document)
81+
return res.render('index', {
82+
req,
83+
res
84+
})
11585
})
11686

11787
// app.use('/ngsw.json', express.static(`${dir}/ngsw.json`, staticOptions))

0 commit comments

Comments
 (0)