Gradle мультипроектная сборка — как обрабатывать локальные зависимости проекта npm

#node.js #npm #build.gradle #gradle-multi-project-build #gradle-kts

#node.js #npm #build.gradle #сборка gradle-multi-project #gradle-kts

Вопрос:

Проект создает приложение Angular.

Мне нужно, чтобы сборка приложения использовала результат другого локального проекта, который представляет собой библиотеку javascript.

Gradle используется для сборки обоих проектов с помощью com.github.node-gradle.плагин узла узла.

Структура проекта проста

 root
- Project App
- Project Library
  

Где приложение зависит от выходных данных библиотеки.

Чтобы быть более точным, приложению требуется вывод «npm pack» в библиотеке проекта.

В проекте приложения я объявляю локальную зависимость npm от проекта библиотеки, которая является результатом пакета npm. (файл .tgz)

  "dependencies": {
    "library": "file:../library/build/library-0.0.1.tgz"
 }
  

Как я могу объявить результат проекта библиотеки как результат сборки и объявить его как ввод зависимостей для проекта приложения?

Используя плагин java-library, это будет что-то вроде этого :

 dependencies {
  api(project(":library"))
}
  

Цель состоит в том, чтобы gradle сначала построил проект библиотеки перед проектом приложения. Еще лучше, если он сможет проверить, изменился ли исходный код библиотеки или нет, чтобы запустить сборку на нем или нет, когда запрашивает сборку приложения.

Сборка для обоих проектов выполняется следующим образом :

   tasks{
    register<com.moowork.gradle.node.npm.NpmTask>("build") {
        dependsOn("npmInstall")
        setArgs(setOf("run-script", "build"))
    }
}
  

И сценарий сборки для проекта библиотеки в package.json

   "scripts": {
     "build": "ng-packagr -p ng-package.json amp;amp; cd ./build amp;amp; npm pack ../dist"
  }
  

Я видел много документации о том, как это сделать с помощью плагина Java, но я не нашел хороших исключений для проектов, отличных от Java.

Любая помощь будет оценена, использование kotlin dsl будет еще лучше 🙂

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

1. у вас это получилось?

2. @NikunjKakadiya к сожалению, нет