我将 Nx 与 Angular 一起使用。我已经运行了@nx/application - setup-ssr
生成器,它为 SSR 创建了所有必需的文件。之前它用于添加单独的执行器来为具有 SSR 的应用程序提供服务,例如serve-ssr
,但没有添加新的执行器,project.json
如下所示:
{
"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"
}
}
}
}
这意味着从 v17 开始,只要您现在提供应用程序,SSR 就会默认启用,这是可怕的,因为您现在所做的每一项更改,尽管使用 Vite 作为开发服务器,但应用程序都需要 10 秒以上的时间来重新加载。
我一直在阅读新的(和旧的)SSR 文档,并试图找到提到这一点的 Github 问题,但它没有提到在提供应用程序时禁用或启用 SSR,或者允许您使用单独的执行器提供应用程序。
我对此感到非常困惑,因为这感觉像是一个巨大的倒退。如何在开发中禁用 SSR?
只要“ssr”或“prerender”符合您的配置,就会启用 SSR。
您的解决方案是
false
在development
配置中将其设置为: