Как получить доступ к папке проекта Angular из пользовательской схемы Angular 1002 *? - PullRequest
0 голосов
/ 28 января 2020

Я разрабатываю кастом Angular Схемы c. Эта схема c должна иметь доступ к папке внутри проекта Angular, которая будет использовать схемы c. (Папка содержит файлы конфигурации, необходимые для создания моих файлов .ts). Схемы c запросят у пользователя путь (хранится в configFilesPath)

Пока что я могу получить доступ только к этой папке следующим образом:

export const readConfigFilefromPath = (configFilesPath: string): string | undefined => {

  // ...

  const path = __dirname + "\\..\\..\\..\\..\\..\\src\\app\\" + configFilesPath;

  // ...
}

Есть ли лучший способ получить доступ к пути из схемы c?

1 Ответ

0 голосов
/ 06 мая 2020

Интересно, что вы пытаетесь читать внешние конфигурационные файлы в своих схемах c, обычно люди пытаются передать всю конфигурацию через опции.

Как говорится, вот один из способов сделайте это - прочитайте angular. json в ваших схемах c и извлеките атрибут Root источника для проекта, который вам небезразличен:

import { SchematicsException, Tree } from '@angular-devkit/schematics';
import { experimental } from '@angular-devkit/core';

function getSourceRoot(sProjectName: string, cTree: Tree) {

    const sWorkspaceConfig = cTree.read('/angular.json');

    if (!sWorkspaceConfig) {
        throw new SchematicsException('Could not find Angular workspace configuration');
    }

    const cWorkspace: experimental.workspace.WorkspaceSchema = JSON.parse(sWorkspaceConfig.toString());

    return cWorkspace.projects[sProjectName].sourceRoot;

}

Как только у вас будет источник root, вы можете добавить свой относительный путь к файлу конфигурации. Если вы хотите избежать такого рода вещей, единственное, о чем я могу подумать, - это создать схему c для каждого файла конфигурации, а затем жестко закодировать конфигурацию в схему c (возможно, не идеально для вашей ситуации).

...