как локально развивать угловой строитель - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть 2 папки на моем компьютере, один проект Angular CLI и один проект машинописного текста, где я разрабатываю компоновщики для архитекторов Angular CLI. Это моно репо, и компоновщики предназначены только для внутреннего использования, и я никогда не планирую публиковать.Я пытался ссылаться на сборщиков 4 различными способами:

относительно:

/* angular.json */
{
  "projects": {
    "my-cli-proj": {
      "architect": {
        "build": {
          "builder": "relative/path/to/my-builders:my-browser"
        }
      }
    }
  }
}

установить локальный модуль (файл:):

/* package.json */
{
  "devDependencies": {
    "my-builders": "file:relative/path/to/my-builders"
  }
}

/* angular.json */
{
  "projects": {
    "my-cli-proj": {
      "architect": {
        "build": {
          "builder": "my-builders:my-browser"
        }
      }
    }
  }
}

npm link («правильный» путь) (не вариант, см. https://github.com/angular/angular-cli/issues/13055#issuecomment-442815952)

, запустите npm link в папке my-builders и затем npm link my-builders в папке проекта angular cli

/* angular.json */
{
  "projects": {
    "my-cli-proj": {
      "architect": {
        "build": {
          "builder": "my-builders:my-browser"
        }
      }
    }
  }
}

пакет npm:

запустите npm pack в папке my-builders

/* package.json */
{
  "devDependencies": {
    "my-builders": "file:relative/path/to/my-builders-version.tgz"
  }
}

/* angular.json */
{
  "projects": {
    "my-cli-proj": {
      "architect": {
        "build": {
          "builder": "my-builders:my-browser"
        }
      }
    }
  }
}

Все способы, кроме пакета npm, приводят к этой вводящей в заблуждение ошибке ng build

Angular Compiler был обнаружен, но это был экземпляр неправильного класса. Это, вероятно, означает, что у вас установлено несколько пакетов @ ngtools / webpack. Вы можете проверить это с помощью npm ls @ngtools/webpack, а затем удалить лишние копии.

вывод npm ls @ngtools/webpack

`-- @angular-devkit/build-angular@0.8.3
  `-- @ngtools/webpack@6.2.3

Необходимость запуска npm pack для каждого небольшого изменения нецелесообразна, есть ли лучший способ для разработки строителя на местном уровне? (Предпочитаю строителей бытьв собственном проекте для разделения).

Дублирование репо https://github.com/gatimus/builder-development

Редактировать:

Я также пытался

/* angular.json */
{
  "projects": {
    "my-cli-proj": {
      "architect": {
        "build": {
          "builder": "my-builders:my-browser",
          "options": {
            "preserveSymlinks": true
          }
        }
      }
    }
  }
}

и ng build --preserve-symlink, те же результаты.

1 Ответ

0 голосов
/ 10 мая 2019

Если вы никогда не планируете публикацию, вы можете поместить сборщики в / my-cli-proj / my-builders и вместо "builder": "my-builders:my-browser" использовать "builder": "./my-builders:my-browser" ,.Я думаю, что это должно работать.Вам все еще нужно как-то скомпилировать ваш компоновщик, как с помощью tsc напрямую.

В соответствии с этим комментарием компоновщик должен быть в том же проекте.

...