Есть ли способ компилировать файлы в sr c, используя angular? - PullRequest
0 голосов
/ 23 марта 2020

У меня следующая структура:

apps
|-api
  |-src
    |-_migrations
    |-_seeds
      |-dev
      |-test
    |-app
    |-assets
    |-environments
    |-main.ts
  |-tsconfig.app.json
  |-tsconfig.json

Я использую ng serve api для компиляции и обслуживания api, который является бэкэндом Nest JS. Это принадлежит монорепо с Angular интерфейсом.

Миграции и сеялки внутри _migrations и _seeds выполнены в TypeScript. Чтобы запустить их при обслуживании бэкэнда, мне нужно скомпилировать их в JavaScript и найти скомпилированные файлы в dist/apps/api.

Я знаю, что могу скомпилировать файлы с помощью tsc перед отправкой или указать Файл конфигурации webpack в angular.json, но я бы хотел сделать его максимально простым и просто попытаться использовать некоторую конфигурацию с ng.

Я попытался добавить пути в tsconfig.app.json, который используется в angular.json.

// angular.json
"api": {
  "root": "apps/api",
  "sourceRoot": "apps/api/src",
  "projectType": "application",
  "prefix": "api",
  "schematics": {},
  "architect": {
    "build": {
      "builder": "@nrwl/node:build",
      "options": {
        "outputPath": "dist/apps/api",
        "main": "apps/api/src/main.ts",
        "tsConfig": "apps/api/tsconfig.app.json",
        "assets": ["apps/api/src/assets"]
      },
      "configurations": {
        "production": {
          "optimization": true,
          "extractLicenses": true,
          "inspect": false,
          "fileReplacements": [
            {
              "replace": "apps/api/src/environments/environment.ts",
              "with": "apps/api/src/environments/environment.prod.ts"
            }
          ]
        }
      }
    },
    "serve": {
      "builder": "@nrwl/node:execute",
      "options": {
        "buildTarget": "api:build"
      }
    }
  }
}
// tsconfig.app.json
{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "../../dist/out-tsc",
    "types": ["node"]
  },
  "exclude": ["**/*.spec.ts"],
  "include": ["**/*.ts"], // or ["**/*.ts", "src/_migrations/*.ts", "src/_seeds/**/*.ts"] without "files"
  "files": ["src/_migrations/*.ts", "src/_seeds/**/*.ts"]
}

Есть ли способ компилировать все файлы в _migrations и _seeds при запуске ng serve api и ng build api просто переключении какой-либо конфигурации или аналогичной?
Если нет, то какая из простейших конфигураций веб-пакета была бы для этого?

1 Ответ

1 голос
/ 23 марта 2020

Ссылка: https://indepth.dev/configuring-typescript-compiler/

  1. TS компилирует рекурсивный поиск всех файлов в каталоге и подкаталогах root и компилирует их.

    Предполагая, что вы ссылаетесь на них, они должны скомпилировать

  2. Компилятор TS также скомпилирует файлы, на которые есть ссылки в любом файле из списка файлов. Например, если main.ts импортирует экспорт из a.ts, этот файл также будет скомпилирован.

файлы - скажите компилятору только компилировать файлы внутри файлов [] и пропустите все остальное.

{
  "compilerOptions": { ... },
  "files": [
    "main.ts",
    "router/b.ts"
  ]
}

Вместо того, чтобы перечислять каждый файл вручную, если файлов больше нет, мы можем использовать опцию include, чтобы указать каталоги, используя глобальные шаблоны файлов Это будет только скомпилируйте файлы в указанных каталогах в include [] Так что в вашем случае это будет компилировать файлы только в миграциях и семенах.

{
      "extends": "./tsconfig.json",
      "compilerOptions": {
        "outDir": "../../dist/out-tsc",
        "types": ["node"]
      },
      "exclude": ["**/*.spec.ts"],
      "include": ["src/_migrations/*.ts", "src/_seeds/**/*.ts"] 
  }
...