【问题标题】:Generate NPM package using open-api-generator gradle plugin使用 open-api-generator gradle 插件生成 NPM 包
【发布时间】:2019-11-12 09:46:21
【问题描述】:

是否可以使用open api generator plugin for gradle生成npm包?

我正在生成 .ts 模型类,我看到 typescript-angular 生成器具有一些属性,如 npmName、npmVersion 等,这让我认为也可以使用插件创建 npm 包。

到目前为止,我还没有设法生成它或在某处找到示例。

这是我尝试的配置示例

task buildTypeScriptClient(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask) {
        generatorName = "typescript-angular"
        inputSpec = "$rootDir/${project.name}/api-definition/${apiDefinitionFile}".toString()
        outputDir = "$buildDir".toString()
        validateSpec = false
        modelPackage = "model.${project.name}-service-client"

        configOptions = [
                ngVersion    : "8.0.0",
                npmName      : "some-typescript-client",
                npmVersion   : "1.0.0",
                npmRepository: "some repo",
                snapshot     : "false",
                supportsES6  : "true"
        ]

        systemProperties = [
                models: "" //generates all model classes
        ]
    }

【问题讨论】:

    标签: angular typescript npm gradle-plugin openapi-generator


    【解决方案1】:

    最后,这是我使用的配置:

    task buildTypeScriptClient(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask) {
            generatorName = "typescript-angular"
            inputSpec = "$rootDir/${project.name}/api-definition/${apiDefinitionFile}".toString()
            outputDir = "$buildDir".toString()
            validateSpec = Boolean.valueOf(project.validateOpenApiFile)
            supportingFilesConstrainedTo = ["package.json"]
            modelPackage = "${project.name}-client/model"
            templateDir = "$rootDir/${project.name}/template/"
    
            configOptions = [
                    ngVersion    : "8.0.0",
                    npmName      : "${project.name}-client",
                    npmVersion   : "${project.version}",
                    npmRepository: project.NEXUS_UPLOAD_URL
            ]
    
            additionalProperties = [
                    backendService: "${project.name}".toString()
            ]
    
            systemProperties = [
                    models    : "",
                    modelDocs : "false",
                    modelTests: "false",
                    apis      : "false"
            ]
        }
    

    我正在使用 package.mustache 模板以这种形式生成自定义 package.json:

    {
        "name": "{{npmName}}",
        "version": "{{npmVersion}}",
        "description": "This package contains the DTO classes (generated by open api generator) used for the REST interface of {{backendService}}",
        "private": false,
        "license": "unlicensed",
        "repository": {
            "type": "git",
            "url": "https://git-repo.com/{{backendService}}"
        },
        "scripts": {
            "package": "npm pack"
        },
        "files": [
            "{{modelPackage}}/*"
        ]
    }
    

    我还使用了一个自定义的 npm gradle 插件,构建在 com.moowork.gradle:gradle-node-plugin:1.3.1 之上,我将客户端打包成一个 zip 文件并将其发布到远程存储库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-21
      • 2019-05-14
      • 2022-07-19
      • 2013-06-06
      • 2018-03-20
      • 2013-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多