我在Angular中使用Nx.我已经运行了@nx/application - setup-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,这很可怕,因为您现在所做的每一项更改,应用程序都需要10秒以上的时间才能重新加载,尽管开发服务器使用的是Vite.
我一直在阅读新的(和旧的)SSR文档,并试图找到提到这一点的Github问题,但它没有提到在服务应用程序的同时禁用或启用SSR,或者允许您使用单独的执行器来服务应用程序.
我对此真的很困惑,因为这感觉像是一大倒退.如何在开发中禁用SSR?