как использовать одну затронутую команду сборки в nrwl nx, когда разработчики используют разные параметры

#node.js #angular #nrwl-nx #nrwl

#node.js #angular #nrwl-nx #nrwl

Вопрос:

У меня есть проект с angular и node builders (@angular-builders /custom-webpack: browser и @nrwl /node:build). Если я пытаюсь запустить команду сборки, содержащую аргументы, которые действительны для одного, но не для другого, я получаю

nx affected:build --aot

сервер запуска ng: сборка —aot

Неизвестный параметр: ‘—aot’

Конструктор angular может принять этот параметр, но конструктор node не может. Я прибегнул к двойному запуску команды affected:build с исключениями, но это не очень хорошо масштабируется, поскольку я добавляю другие типы сборщиков.

nx affected:build --aot --exclude node-js-app

nx affected:build --exclude angular-js-app1, angular-js-app2

Есть ли способ использовать affected:build в проектах angular и node и иметь возможность использовать флаги, специфичные для angular?

Комментарии:

1. Вы когда-нибудь находили более чистое решение для этого?

Ответ №1:

Не уверен, что это лучшее или единственное решение, но это то, что я в конечном итоге использовал для решения проблемы.

Я настроил пользовательскую команду запуска в angular.json, в которой я жестко запрограммировал конкретные аргументы, которые мне нужны для каждого приложения или библиотеки. Вам не нужно все это жестко кодировать (см. Пример конфигурации), но в нашем случае это было просто проще сделать.

Чтобы использовать затронутый nx, теперь вы можете настроить таргетинг на вновь созданную ci-build команду: nx affected --target=ci-build --base=origin/master --args="--configuration=production" .

 ...
   "my-angular-app": {
      "architect": {
        "ci-build": {
          "builder": "@nrwl/workspace:run-commands",
          "options": {
            "commands": [
                "ng build my-angular-app --configuration={args.configuration} --single-bundle --bundleStyles false --keepStyles false"
            ]
          }
        },
...
   "my-node-lib": {
      "architect": {
        "ci-build": {
          "builder": "@nrwl/workspace:run-commands",
          "options": {
            "commands": [
                "ng build my-node-lib --configuration={args.configuration}"
            ]
          }
        }
...
  

Комментарии:

1. это классная идея, спасибо. Я не нашел никакого решения, в настоящее время мы просто запускаем несколько команд с —excludes