#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