如何在多平台Kotlin项目中隐藏JavaScript目标的包结构

时间:2019-12-17 12:49:49

标签: kotlin kotlin-multiplatform

我正在使用Kotlin多平台构建一个库,本机JVM和Node应用程序应使用该库。我正在努力为Node版本提供惯用的API,因为Kotlin exposes the package structure to JavaScript

我想在com.company.myclientlib.common包内的公共sourceSet中定义我的实体:

// sourceSet: common
package com.company.myclientlib.common

data class Product(
    val id: String,
    val name: String,
    val displayName: String
    // ...
)

通过此操作,在Node应用程序中创建新的Product如下:

// Node application code
const lib = require("lib")
const product = new lib.com.company.myclientlib.common.Product("id", "name", ...)

我尝试将@JsName("Product")放在Product类上。尽管该名称可能会影响@JsName,但该软件包仍将以相同的方式公开。

是否可以在不重新实现库代码的JavaScript sourceSet中的类型的情况下,在JavaScript中不公开Product包?

注意:公开用于JVM目标的软件包就可以了。

1 个答案:

答案 0 :(得分:0)

我相信您正在寻找JsQualifier