Angular 预渲染 i18n 混乱

Sea*_*uit 7 server-side-rendering angular-universal angular

我们严重依赖 Angular i18n 进行本地化。通常我们会使用命令为语言环境创建一个文件夹

ng build some-project --localize
Run Code Online (Sandbox Code Playgroud)

这将创建/dist/some-project/en//dist/some-project/de/

npm run prerender 仅在 /dist/some-project/browser/ 中输出一个,忽略 --localize 标志。我的问题是:预渲染选项是否仍处于某种测试阶段?我们现在应该避免它,还是我在这里遗漏了一些东西?

我的理解是我必须为每个区域创建单独的静态页面。

这是我的 angular.json

"prerender": {
      "builder": "@nguniversal/builders:prerender",
      "options": {
        "browserTarget": "offer:build:prod",
        "serverTarget": "offer:server:prod",
        "routes": [
          "/"
        ]
      },
      "configurations": {
        "prod": {}
      }
    }
Run Code Online (Sandbox Code Playgroud)

Sea*_*uit 6

我认为这根本没有记录。我花了几天的谷歌搜索/尝试失败才在发布问题后几分钟找到答案。

npm run prerender
Run Code Online (Sandbox Code Playgroud)

执行:

 "prerender": {
      "builder": "@nguniversal/builders:prerender",
      "options": {
        "browserTarget": "offer:build:prod",
        "serverTarget": "offer:server:prod",
        "routes": [
          "/"
        ]
      },
      "configurations": {
        "prod": {}
      }
    }
Run Code Online (Sandbox Code Playgroud)

我需要添加"localize": ["en", "de"]选项serverbrowser构建配置
服务器:

        "server": {
          "builder": "@angular-devkit/build-angular:server",
          "options": {
            "outputPath": "dist/offer/server",
            "main": "projects/offer/server.ts",
            "tsConfig": "projects/offer/tsconfig.server.json",
            "localize": ["en", "de"]
          },
          "configurations": {
            "prod": {
              "sourceMap": false,
              "optimization": true
            }
          }
        }
Run Code Online (Sandbox Code Playgroud)

客户:

"architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/offer/browser",
            "index": "projects/offer/src/index.html",
            "main": "projects/offer/src/main.ts",
            "polyfills": "projects/offer/src/polyfills.ts",
            "tsConfig": "projects/offer/tsconfig.app.json",
            "localize": ["en", "de"],
            "aot": true,
            "extractCss": true,
            "preserveSymlinks": true,
            "stylePreprocessorOptions": {
              "includePaths": [
                "projects/offer/src"
              ]
            }... etc
Run Code Online (Sandbox Code Playgroud)