Browse Source

templates builders updated to application builder

pull/23416/head
erdemcaygor 1 year ago
parent
commit
78dbb07cb8
  1. 20
      templates/app/angular/angular.json
  2. 3
      templates/app/angular/package.json
  3. 112
      templates/app/angular/src/server.ts
  4. 3
      templates/app/angular/tsconfig.app.json

20
templates/app/angular/angular.json

@ -24,11 +24,19 @@
"outputPath": "dist/MyProjectName/browser", "outputPath": "dist/MyProjectName/browser",
"index": "src/index.html", "index": "src/index.html",
"browser": "src/main.ts", "browser": "src/main.ts",
"polyfills": ["src/polyfills.ts"], "polyfills": [
"src/polyfills.ts"
],
"tsConfig": "tsconfig.app.json", "tsConfig": "tsconfig.app.json",
"inlineStyleLanguage": "scss", "inlineStyleLanguage": "scss",
"allowedCommonJsDependencies": ["chart.js", "js-sha256"], "allowedCommonJsDependencies": [
"assets": ["src/favicon.ico", "src/assets"], "chart.js",
"js-sha256"
],
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [ "styles": [
{ {
"input": "node_modules/@fortawesome/fontawesome-free/css/all.min.css", "input": "node_modules/@fortawesome/fontawesome-free/css/all.min.css",
@ -112,7 +120,11 @@
}, },
"src/styles.scss" "src/styles.scss"
], ],
"scripts": [] "scripts": [],
"outputMode": "server",
"ssr": {
"entry": "src/server.ts"
}
}, },
"configurations": { "configurations": {
"production": { "production": {

3
templates/app/angular/package.json

@ -8,7 +8,8 @@
"build:prod": "ng build --configuration production", "build:prod": "ng build --configuration production",
"watch": "ng build --watch --configuration development", "watch": "ng build --watch --configuration development",
"test": "ng test", "test": "ng test",
"lint": "ng lint" "lint": "ng lint",
"serve:ssr:MyProjectName": "node dist/MyProjectName/browser/server/server.mjs"
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {

112
templates/app/angular/src/server.ts

@ -1,66 +1,59 @@
import 'zone.js/node'; import {
AngularNodeAppEngine,
import { APP_BASE_HREF } from '@angular/common'; createNodeRequestHandler,
import { CommonEngine } from '@angular/ssr/node'; isMainModule,
writeResponseToNodeResponse,
} from '@angular/ssr/node';
import express from 'express'; import express from 'express';
import { existsSync } from 'node:fs';
import { join } from 'node:path'; import { join } from 'node:path';
import bootstrap from './main.server';
// The Express app is exported so that it can be used by serverless Functions.
export function app(): express.Express {
const server = express();
const distFolder = join(process.cwd(), 'dist/MyProjectName/browser');
const indexHtml = existsSync(join(distFolder, 'index.original.html'))
? join(distFolder, 'index.original.html')
: join(distFolder, 'index.html');
const commonEngine = new CommonEngine(); const browserDistFolder = join(import.meta.dirname, '../browser');
server.set('view engine', 'html'); const app = express();
server.set('views', distFolder); const angularApp = new AngularNodeAppEngine();
server.get('/.well-known/appspecific/com.chrome.devtools.json', (req, res) => { /**
res.status(404).send('Not Found'); * Example Express Rest API endpoints can be defined here.
}); * Uncomment and define endpoints as necessary.
*
* Example:
* ```ts
* app.get('/api/{*splat}', (req, res) => {
* // Handle API request
* });
* ```
*/
// Example Express Rest API endpoints /**
// server.get('/api/{*splat}', (req, res) => { }); * Serve static files from /browser
// Serve static files from /browser */
server.use(express.static(distFolder, { app.use(
express.static(browserDistFolder, {
maxAge: '1y', maxAge: '1y',
index: false, index: false,
})); redirect: false,
}),
server.get('/.well-known/*', (req, res) => { );
res.status(404).send('Not found');
});
// All regular routes use the Angular engine
server.use((req, res, next) => {
const { protocol, originalUrl, baseUrl, headers } = req;
commonEngine /**
.render({ * Handle all other requests by rendering the Angular application.
bootstrap, */
documentFilePath: indexHtml, app.use((req, res, next) => {
url: `${protocol}://${headers.host}${originalUrl}`, angularApp
publicPath: distFolder, .handle(req)
providers: [{ provide: APP_BASE_HREF, useValue: baseUrl }], .then((response) =>
}) response ? writeResponseToNodeResponse(response, res) : next(),
.then((html) => res.send(html)) )
.catch((err) => next(err)); .catch(next);
}); });
return server;
}
function run(): void { /**
* Start the server if this module is the main entry point.
* The server listens on the port defined by the `PORT` environment variable, or defaults to 4000.
*/
if (isMainModule(import.meta.url)) {
const port = process.env['PORT'] || 4000; const port = process.env['PORT'] || 4000;
app.listen(port, (error) => {
// Start up the Node server
const server = app();
server.listen(port, (error) => {
if (error) { if (error) {
throw error; throw error;
} }
@ -69,14 +62,7 @@ function run(): void {
}); });
} }
// Webpack will replace 'require' with '__webpack_require__' /**
// '__non_webpack_require__' is a proxy to Node 'require' * Request handler used by the Angular CLI (for dev-server and during build) or Firebase Cloud Functions.
// The below code is to ensure that the server is run only when not requiring the bundle. */
declare const __non_webpack_require__: NodeRequire; export const reqHandler = createNodeRequestHandler(app);
const mainModule = __non_webpack_require__.main;
const moduleFilename = mainModule && mainModule.filename || '';
if (moduleFilename === __filename || moduleFilename.includes('iisnode')) {
run();
}
export default bootstrap;

3
templates/app/angular/tsconfig.app.json

@ -7,7 +7,8 @@
}, },
"files": [ "files": [
"src/main.ts", "src/main.ts",
"src/polyfills.ts" "src/polyfills.ts",
"src/server.ts"
], ],
"include": [ "include": [
"src/**/*.d.ts" "src/**/*.d.ts"

Loading…
Cancel
Save