Estou usando Nx com Angular. Executei o @nx/application - setup-ssr
gerador que criou todos os arquivos necessários para o SSR. Antes costumava adicionar executores separados para servir um aplicativo com SSR como serve-ssr
, mas nenhum novo executor foi adicionado project.json
como visto aqui:
{
"name": "public",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"projectType": "application",
"prefix": "app",
"sourceRoot": "apps/public/src",
"tags": [],
"targets": {
"build": {
"executor": "@angular-devkit/build-angular:application",
"outputs": ["{options.outputPath}"],
"options": {
"outputPath": "dist/apps/public",
"index": "apps/public/src/index.html",
"browser": "apps/public/src/main.ts",
"polyfills": ["zone.js"],
"tsConfig": "apps/public/tsconfig.app.json",
"assets": [
{
"glob": "**/*",
"input": "assets",
"output": "assets"
},
"apps/public/src/favicon.ico",
"apps/public/src/assets"
],
"styles": ["apps/public/src/styles.scss"],
"stylePreprocessorOptions": {
"includePaths": ["styles", "libs/stylekit/src/lib"]
},
"scripts": [],
"server": "apps/public/src/main.server.ts",
"prerender": true,
"ssr": {
"entry": "apps/public/server.ts"
}
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kb",
"maximumError": "1mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb"
}
],
"outputHashing": "all"
},
"development": {
"optimization": false,
"extractLicenses": false,
"sourceMap": true,
"namedChunks": true
}
},
"defaultConfiguration": "production"
},
"serve": {
"executor": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"buildTarget": "public:build:production"
},
"development": {
"buildTarget": "public:build:development"
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "public:build"
}
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": ["apps/public/**/*.ts", "apps/public/**/*.html"]
}
},
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "apps/public/jest.config.ts"
}
},
"serve-static": {
"executor": "@nx/web:file-server",
"options": {
"buildTarget": "public:build"
}
}
}
}
O que significa que o SSR é ativado por padrão sempre que você disponibiliza o aplicativo desde a v17, o que é horrível porque para cada alteração feita agora, o aplicativo leva mais de 10 segundos para recarregar, apesar de usar o Vite para o servidor de desenvolvimento.
Estive lendo os novos (e antigos) documentos de SSR e também tentando encontrar problemas do Github que mencionam isso, mas não diz nada sobre desabilitar ou habilitar o SSR ao servir o aplicativo ou permitir que você sirva o aplicativo usando um executor separado.
Estou muito confuso em relação a isso, pois parece um grande retrocesso. Como desativo o SSR no desenvolvimento?
O SSR é ativado sempre que "ssr" ou "prerender" são verdadeiros em sua configuração.
A solução para você seria configurá-lo
false
nadevelopment
configuração: